🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# **Basic基类** 目录结构 ``` ├─basic │ BaseController.php │ BaseManager.php │ BaseMessage.php │ BaseStorage.php │ BaseUpload.php ``` ## `BaseController` 用来继承在控制器中,内部自带数据验证函数和返回json的方法方便调用 创建User控制器,文件存放目录:app\controller\admin\user\User.php ``` <?php namspase app\api\controller\user; class User extends BaseController { public function index() { return app('json')->success('ok'); } } ``` ## `BaseJob`用来继承在消息队列执行的类中,自带有处理消息的能力 创建一个执行消息队列的类,文件存放目录:`crmeb\job\TestJob.php` ``` <?php namespase crmeb\job; use crmeb\job\BaseJob; class TestJob extends BaseJob { public function fire($job, $data) { return true; } } ``` 使用加入消息队列: ``` use crmeb\utils\Queue; use crmeb\job\TestJob; Queue::push(TestJob::class, $data); ``` ## `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`添加模板消息的逻辑,`delete`和`list`总计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`方法获取模板消息列表