美文网首页
Yii2写一个扩展

Yii2写一个扩展

作者: leegoway | 来源:发表于2017-03-21 18:34 被阅读0次

    由于最近要使用百度人脸识别的接口,同时集成到我的项目里面,所以将百度aip-face的接口做了一层封装,同时增加了AKSK的认证。

    一、创建composer项目

    命令行输入 composer init,输入相关信息,最终形成的composer.json文件如下:

    {
        "name": "leegoway/yii2-baidu-aipface",
        "description": "A yii2 extension, baidu aip-face with aksk auth",
        "type": "library",
        "license": "BSD 3-Clause",
        "authors": [
            {
                "name": "leegoway",
                "email": "leego.sir@gmail.com"
            }
        ],
        "minimum-stability": "dev",
        "require": {
            "yiisoft/yii2": "*"
        }
    }
    

    二、修改组件命名空间的生命

    修改composer.json增加autoload字段,同时在根目录下建立src文件夹。

        "autoload": {
            "psr-4": {
                "leegoway\\aipface\\": "src/"
            }
        }
    

    三、创建业务相关的类

    因为创建的是yii2框架的component,因此要继承这个yii\base\component类:

    <?php
    
    namespace leegoway\aipface;
    
    use yii\base\Component;
    
    class FaceFacade extends Component
    {
        private $aipNFace = null;
        public $access_key = '';
        public $secret_key = '';
    
        public function init() 
        {
            if (null === $this->aipNFace) {
                $this->aipNFace = new AipNFace($this->access_key, $this->secret_key);
            }
            return $this->aipNFace;
        }
    
        //获取分组
        public function GetGroup($start = 0, $num = 1)
        {
            $this->getAipHandler();
            return $this->aipNFace->GetGroup($start, $num);
        }
    
        //获取分组下的所有用户
        public function GetGroupUsers($groupId)
        {
            return $this->aipNFace->GetGroupUsers($groupId);
        }
    
    }
    

    四、提交代码并提交packagist

    首先提交github,再次到packagist网站submit一个

    五、使用篇

    新建一个项目,这里使用mkdir project测试,进入项目后执行以下命令安装此扩展:

    composer require "leegoway/yii2-baidu-aipface" dev-master
    

    修改yii项目的web.php并修改component部分如下:

    'component' => [
        'face'        => [
             'class' => 'leegoway\aipface\FaceFacade',
             'access_key' => '***',
             'secret_key' => '***'
        ],
    ]
    

    然后在需要的地方调用组件方法如下:

    <?php
    ...
    Yii::$ap->face->GetGroups();
    ...
    

    六、项目地址

    Github项目地址在https://github.com/leegoway/yii2-baidu-aipface ,欢迎大家提issue

    相关文章

      网友评论

          本文标题:Yii2写一个扩展

          本文链接:https://www.haomeiwen.com/subject/knlgnttx.html