iqomp/handler

单个模型的数据处理器

1.1.1 2021-11-17 07:17 UTC

This package is auto-updated.

Last update: 2024-09-17 12:57:17 UTC


README

一个用于处理与模型交互、表单验证和格式化的类。此类使得生成通用重复操作变得简单。

它会在执行 createcreateManyset 操作时自动调用表单验证。

调用 creategetgetOne 时,如果存在数据,将返回格式化后的对象。返回的数据对于 get 方法是一个数组,对于 creategetOne 方法是一个对象。其他方法将返回模型返回的数据。

调用方法 get 还会生成分页数据。

安装

composer require iqomp/handler

使用方法

创建一个扩展 Iqomp\Handler\Handler 的类,并填写一些属性 modelformatterforms,如下所示

<?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} 函数的结果。