iqomp / handler
单个模型的数据处理器
1.1.1
2021-11-17 07:17 UTC
Requires
- iqomp/formatter: ^2.2
- iqomp/model: ^2.1
- iqomp/validator: ^2.2
Requires (Dev)
README
一个用于处理与模型交互、表单验证和格式化的类。此类使得生成通用重复操作变得简单。
它会在执行 create
、createMany
和 set
操作时自动调用表单验证。
调用 create
、get
和 getOne
时,如果存在数据,将返回格式化后的对象。返回的数据对于 get
方法是一个数组,对于 create
和 getOne
方法是一个对象。其他方法将返回模型返回的数据。
调用方法 get
还会生成分页数据。
安装
composer require iqomp/handler
使用方法
创建一个扩展 Iqomp\Handler\Handler
的类,并填写一些属性 model
、formatter
和 forms
,如下所示
<?php namespace App\Handler; class User extends \Iqomp\Handler\Handler { // handling model protected string $model = 'App\Model\User'; // formatter data for the object // used for method `get`, `create`, and `getOne` protected array $formatter = [ 'name' => 'wallet', 'options' => [] ]; // custom error code for form invalid or general error protected array $errors_code = [ 422 => 100004, 500 => 100003 ]; // property name for pagination result per page protected string $pager_rpp = 'per_page'; // property name for pagination result page number protected string $pager_page = 'page'; // property name for pagination total result protected string $pager_total = 'total'; // form name for each methods protected array $forms = [ 'create' => 'user/create', 'createMany' => 'user/createMany', 'set' => 'user/set' ]; // list of disallowed method to call protected array $disalow_methods = [ 'getConnection', 'getModel' ]; // custom function after protected function after_create(array $fields, $result) { // the function that will be called right after // creating the object } }
现在从控制器使用它就像这样简单
// ... $user = new App\Handler\User; // get formatted single object $object = $user->getOne(['id' => 1]); // create new user that should be validated // and return the created one after formatted $object = $user->create(['...']); // get validation errors $errors = $user->error(); // get users page 2 $objects = $user->get(['status' => 1], 12, 2); // get paginations data $pager = $user->pagination();
附加方法
after_[method]
如果你在处理器类中创建一个名为 after_{method-name}
的方法,那么该方法将在 {method-name}
方法成功调用后立即被调用。after_{method}
将使用主方法传递的参数被调用,最后一个参数是调用 {method-name}
函数的结果。