Skip to content

Basic目录

liaofei edited this page Jan 20, 2021 · 1 revision

Basic基类

目录结构

├─basic
│      BaseController.php
│      BaseJob.php
│      BaseManager.php
│      BaseMessage.php
│      BaseModel.php
│      BasePrinter.php
│      BaseSms.php
│      BaseStorage.php
│      BaseUpload.php

BaseController 用来继承在控制器中,内部自带数据验证函数和返回json的方法方便调用

创建User控制器,文件存放目录:app\api\controller\user\User.php

<?php

namspase app\api\controller\user;

class User extends BaseController
{
    public function index()
    {
           return $this->success('ok');
    }
}

BaseJob用来继承在消息队列执行的类中,自带有处理消息的能力

创建一个执行消息队列的类,文件存放目录:crmeb\job\TestJob.php

<?php
namespase crmeb\job;

use crmeb\job\BaseJob;

class TestJob extends BaseJob
{
        public function index()
        {
                return true;
        }
}

使用加入消息队列:

use crmeb\utils\Queue;
use crmeb\job\TestJob;

Queue::instance()->do('index')->job(TestJob::class)->push();

BaseManager用来继承在多种驱动的情况下来使用,内部自动实例化驱动下的类进行缓存,和THINKPHP的缓存驱动类似原理

创建一个快递服务目录结构如下

crmeb 
│      ├─services
│      │      ├─express
│      │      │      ├─Express.php
│      │      │      ├─storage
│      │      │      │      ├─Express100.php

express目录属于整个服务的大目录。crmeb/services/express/Express.php 属于服务入口文件,文件内容如下

<?php
namespace crmeb\services\express;


use crmeb\basic\BaseManager;

/**
 * Class Express
 * @package crmeb\services\express
 */
class Express extends BaseManager
{
    /**
     * 设置驱动命名空间
     * @var string
     */
    protected $namespace = '\\crmeb\\services\\express\\storage\\';

    /**
     * 设置默认驱动
     * @return mixed|string
     */
    protected function getDefaultDriver()
    {
        return 'express_100';
    }
}

  • getDefaultDriver方法返回字符串为当前服务驱动的默认驱动
  • 属性$namespace设置当前服务驱动存放在那个命名空间下
  • crmeb/services/express/storage/Express100.php 属于需要具体实现的业务逻辑

BaseMessage用于模板消息发送继承后内部自带很多快捷方法,可快速的调用利于对接各种模板消息。在对接多种平台的时候需要实现send发送模板消息的逻辑,add添加模板消息的逻辑,deletelist总计4个方法

创建一个百度小程序的模板消息发送蕾,文件目录存放:crmeb\services\template\storage\Baidu.php

<?php
namespace crmeb\services\template\storage;


use crmeb\basic\BaseMessage;

class Baidu extends BaseMessage
{
    /**
     * 初始化
     * @param array $config
     * @return mixed|void
     */
    protected function initialize(array $config)
    {
        parent::initialize($config); // TODO: Change the autogenerated stub
    }

    /**
     * 发送模板消息
     * @param string $templateId
     * @param array $data
     * @return mixed|void
     */
    public function send(string $templateId, array $data = [])
    {
        // TODO: Implement send() method.
    }

    /**
     * 添加模板消息
     * @param string $shortId
     * @return mixed|void
     */
    public function add(string $shortId)
    {
        // TODO: Implement add() method.
    }

    /**
     * 删除模板消息
     * @param string $templateId
     * @return mixed|void
     */
    public function delete(string $templateId)
    {
        // TODO: Implement delete() method.
    }

    /**
     * 模板消息列表
     * @return mixed|void
     */
    public function list()
    {
        // TODO: Implement list() method.
    }
}

  • send方法负责发送模板消息
  • add方法负责添加模板消息,如果没有添加的接口可以不用实现内部的逻辑,但是不需要创建出对应的方法
  • delete方法负责删除模板消息,
  • list方法获取模板消息列表

BaseModel目前为空基类,用于继承在model中使用,可以自行添加方法便于在二次开发中增加自己的逻辑方法

创建一个User的model,文件目录:app\model\user\User.php

<?php

namespase app\model\user;

use crmeb\basic\BaseModel;
use crmeb\traits\ModelTrait;

class User extends BaseModel
{
    use ModelTrait;
    
    protected $name = 'user';
    
    /**
     *  设置主键
     * @var string 
     */
    protected $pk = 'id';
    
      /**
     *  是否自动更新时间
     * @var string 
     */
    protected $updateTime = false;
}

BasePrinter需要继承在小票打印服务中,目前以实现易联云小票打印,如需自行添加其他打印机需要实现startPrinter打印逻辑和setPrinterContent设置打印内容逻辑

实例增加一个小鹅通小票打印机,文件存放目录:cremb\services\sms\storage\XiaoETong.php

<?php

namsepase crmeb\services\printer\storage;

use crmeb\basic\BasePrinter;

class XiaoETong extends  BasePrinter
{
     /**
     * 初始化
     * @param array $config
     * @return mixed|void
     */
    protected function initialize(array $config)
    {
        parent::initialize($config);
    }
    
    /**
     * 开始打印
     * @return bool|mixed|string
     * @throws \Exception
     */
    public function startPrinter()
    {
        
        //处理打印逻辑
    }

    /**
     * 设置打印内容
     * @param array $config
     * @return YiLianYun
     */
    public function setPrinterContent(array $config): self
    {
        //处理打印机要打印的内容
        $this->printerContent = '打印内容';
        return $this;
    }
}

BaseSms用于继承在短信服务中,目前以实现云信平台对接。如需自行添加其他平台需要实现send方法

实例增加一个阿里云短信平台,文件存放目录:cremb\services\sms\storage\Aliyun.php

<?php

namsepase crmeb\services\sms\storage;

use crmeb\basic\BaseSms;

class Aliyun extends  BaseSms
{

    /**
     * 初始化
     * @param array $config
     * @return mixed|void
     */
    protected function initialize(array $config)
    {
        parent::initialize($config);
    }

    /**
     * 发送短信
     * @param $phone
     * @param $template
     * @param $param
     * @return bool|string
     */
    public function send(string $phone, string $templateId, array $data = [])
    {
        //完成阿里云平台发送短信逻辑
    }
}
Clone this wiki locally