快速开始

提示

因为 MoChat 构建在 Hyperf 之上,所以我们假定您对 Hyperf 已经基本熟悉

控制器

快速生成

  1. php bin/hyperf.php mcGen:action Foo

命令行会帮你自动生成Foo相关的控制器,并生成相应的注解路由与继承等

  1. ./app
  2. ├── Action
  3. ├── Foo
  4. ├── Create.php
  5. ├── Destroy.php
  6. ├── Edit.php
  7. ├── Index.php
  8. ├── Show.php
  9. ├── Store.php
  10. └── Update.php
  11. ...

./app/Action/Foo/Index.php 如下

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Action\Foo;
  4. use MoChat\Framework\Action\AbstractAction;
  5. use Hyperf\HttpServer\Annotation\Controller;
  6. use Hyperf\HttpServer\Annotation\RequestMapping;
  7. /**
  8. * 查询 - 列表
  9. * @Controller()
  10. */
  11. class Index extends AbstractAction
  12. {
  13. /**
  14. * @RequestMapping(path="/foo/index", methods="GET")
  15. */
  16. public function handle(): array
  17. {
  18. return ['Index'];
  19. }
  20. }

场景验证器

系统内置了场景验证器的trait,您可以直接引入,来进行数据格式验证

  1. use MoChat\Framework\Request\ValidateSceneTrait;
  2. ...
  3. public function handle(): array
  4. {
  5. // 接收参数
  6. $params = $this->request->inputs(['name'], ['name' => '']);
  7. // 验证
  8. $this->validated($params, 'store');
  9. return [];
  10. }
  11. /**
  12. * 验证规则.
  13. */
  14. public function rules(array $inputs): array
  15. {
  16. return [
  17. 'id' => 'required|int',
  18. 'name' => 'required|max:25',
  19. ];
  20. }
  21. /**
  22. * 属性替换.
  23. * @return array|string[] ...
  24. */
  25. public function attributes(): array
  26. {
  27. return [
  28. 'name' => '姓名',
  29. ];
  30. }
  31. /**
  32. * 验证场景.
  33. * @return array|array[] 场景规则
  34. */
  35. public function scene(): array
  36. {
  37. return [
  38. // 保存
  39. 'store' => ['name'],
  40. ];
  41. }

模型层、服务层

在自己生成模型层前,请先配置好./config/autoload/databases.php

  1. use Hyperf\Database\Commands\ModelOption;
  2. use MoChat\Framework\Model\AbstractModel;
  3. ...
  4. 'commands' => [
  5. 'gen:model' => [
  6. 'path' => 'app/Model',
  7. 'force_casts' => true,
  8. 'inheritance' => 'AbstractModel',
  9. 'uses' => AbstractModel::class,
  10. 'property_case' => ModelOption::PROPERTY_CAMEL_CASE,
  11. ],
  12. ],

foo

  1. CREATE TABLE "mc_foo" (
  2. "id" int(11) unsigned NOT NULL AUTO_INCREMENT,
  3. "name" varchar(255) NOT NULL DEFAULT '' COMMENT '名称',
  4. "created_at" timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  5. "updated_at" timestamp NULL DEFAULT NULL,
  6. "deleted_at" timestamp NULL DEFAULT NULL,
  7. PRIMARY KEY ("id")
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='foo';

foo模型层、服务层,快速生成

  1. php bin/hyperf.php mcGen:model foo

生成文件内已包含了基本的增删改查分页的基本方法,如下

  1. ./app
  2. ├── Contract
  3. └── FooServiceInterface.php
  4. ├── Service
  5. └── FooService.php
  6. ├── Model
  7. └── Foo.php
  8. ...

层级调用

接口调用顺序默认 控制器 -> 逻辑层(可选)-> 契约层 -> 服务层 -> 模型层

提示

契约与服务已在底层默认绑定,无需再在配置文件中依赖绑定

更详细的二次开发规范,请查看开发规范

注意

我们强烈建议您通过插件的形式来进行二次开发,以达到灵活的开发、迭代与项目部署