Download the PHP package jiechengyang/i-secure-center without Composer
On this page you can find all versions of the php package jiechengyang/i-secure-center. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download jiechengyang/i-secure-center
More information about jiechengyang/i-secure-center
Files in jiechengyang/i-secure-center
Package i-secure-center
Short Description 基于Yii2实现海康威视综合安防管理平台开放api
License Apache-2.0
Informations about the package i-secure-center
iSecureCenter
基于yii2开发的海康威视综合安防平台V1.3api接口组件,目前组件封装了资源接口和视频接口,后续打算把全部接口封装。
===============================
安装
-
使用composer composer的安装以及国内镜像设置请点击此处
- 手动导入 下载i-secure-center包后放置在任意目录 然后在yii2 index.php中
关于组件
设计的想法:
- 组件是继承了yii\base\Component,因为想把事件和行为也结合起来使用。写组件的时候,如果不想用事件、行为这些影响性能的特性可以直接继承yii\base\BaseObject写。
- 组件提供了before_send和after_send两个事件
- before_send可以用来修改我们的一些配置参数(比如:安防平台的地址,默认的地址在系统加载就固定了,那如果我们要换成另一个地址就可以在bofore_send里面处理了),可以加入判断,比如用户权限不过直接return false,就无需请求安防平台了
- after_send里面有返回的数据,我们可以做一些参数校验之类的
- 总而言之,使用事件的好处便是提前把接口请求前后的事情都注入到事件。还有这个组件提供的事件主要还是为了学了yii2的组件的思想,用不用无妨,用的话,可以根据自己的业务好好的完善,我只是提供了一个写yii2组件的demo
- 组件配置的ak配置是为了实现多合作方请求的,使用综合安防的朋友都知道,合作方是有多个的,每个合作方的权限也不一致,请求接口返回的数据也会和合作方的权限有关系,因此在这样的考虑之下,便把它设计成了一个多合作方的操作。
需要强调的是:必须配置一个默认的合作方adminPartner,建议是配置对内合作方
接口实现的想法:
-
这次接口实现有幸在github上看到一位朋友的设计,让我耳目一新,于是我便借着这个思路开发了,以下我将说明这个接口设计。
*第一个想法:外部调用组件的send的方法,传递两个参数:A、安防接口地址B、对应A需要的参数。在send里面直接把验签的参数和提交的参数配置,使用http-client处理。
*第二个想法:第一想法的诟病就是安防接口地址太长,既然是个组件,用起来不方面,于是乎便想到了枚举,用一个文件专门作一个数组映射,用相近的单词作为key,接口地址作为value。其他和第一个想法一样。
*第三个想法:这便是看了那位朋友的设计之后,让我有了相同的想法。我先按照安防接口的大分类定义几个目录,然后把小分类写成文件放在大目录里,这里的文件就是一个接口类,这个接口类都会继承BaseApi的抽象类。外部调用的时候,先实例化某个接口类作为第一个参数,第二个参数则是类里方法名,这个方法名就代表具体的接口地址。
*第四个想法:组件的里面加入接口服务层service,由service层具体请求数据,这样组件的send方法便有了第三个参数合作方,这个参数便是实现我们的多合作方请求接口。
总结
通过第三、四个想法的结合,我发现了它的一些好处:
- 我们调用人家的接口总有些必须携带的参数,在接口类的每个方法都预先的做了预警操作,必要的参数外部调用未携带时,send会直接返回错误提示,而像分页参数、时间参数方法里也设置了默认值和时间格式转换,外部调用简单调用就可以了。而这样的想法和上面那位朋友也是不谋而合,因为我没细看他的代码,在我接口调用出现问题时,发现他的做法也是如此。
- 合理的使用yii2-http-client组件,我封装了http请求组件,因为我在init里面,写了before_send和after_send的两个事件。service调用只需把请求的地址,参数,验参的参数提供过去,具体怎么接口认证,那就是before_send的事了,最后返回的参数需要做一些变化,也是after_send做的了,service它只需发送了,把想要的数据给它就行了。 哈哈,yii2的思想真的很nice。
- baseApi代码和注释如下:
配置
i-secure-center是作为一个组件提供服务的,所以得配置yii2 iSecureCenter组件。打开common/config/main.php在components块内增加如下配置: 配置见config/main.php
http-client说明
yii2的http-client默认使用php的stream扩展,如果使用curl,则在实例化之后$client->setTransport("yii\httpclient\CurlTransport")即可。如果需要跳过ssl证书检测则->setOptions([ CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ])
示例
见examples/demo.php
说明
要在github发布release才可以composer require,不然你只能用dev-master版本
yii2-iSecureCenter 集成了[https://open.hikvision.com] 常用接口,采用组件的形式主要为了实现参数可配置,事件化处理业务。
目前组件还在完善中....