域名¶
注意
在 Phalcon 的未来版本中,此组件将被重构以遵循负载互操作性接口。
领域组件包含用于实现行动领域响应器 (ADR) 模式并可在实现领域驱动设计.
负载¶
The 行动领域响应器需要一个在三层之间传输数据的机制以服务于您的应用。Phalcon\Domain\Payload是一个用于在模式的三层之间发送数据的数据传输对象。
使用此对象时,您可以设置其状态、输入、输出、任何消息或模式每一层所需的额外信息,以便在应用程序流中将其传递到下一层需要它的地方。该类本身是一个数据包装器,包含要在层间传递的必要信息。
所存储的属性为:
| 属性 | 描述 | 
|---|---|
extras |  额外信息 | 
input |  输入 | 
messages |  消息 | 
status |  状态 | 
output |  输出 | 
该组件提供了上述属性的 getter 和 setter 方法。
注意
所有的 setter 方法返回一个Phalcon\Domain\Payload对象,这使您能够链式调用以获得更流畅的语法。
工厂¶
Phalcon\Domain\PayloadFactory同样可用,提供了一种简单的方法来生成新的 Payload 对象。
<?php
use Phalcon\Domain\PayloadFactory;
$payloadFactory = new PayloadFactory();
$payload = $payloadFactory->newInstance();
?>
接口¶
如果您希望扩展该对象,可以利用三个接口。
| 接口 | 描述 | 
|---|---|
ReadableInterface |  仅包含读取方法 | 
WritableInterface |  仅包含写入方法 | 
PayloadInterface |  包含读取和写入方法 | 
状态值¶
The Phalcon\Domain\Payload\Status类包含多个常量,有助于管理 Payload 对象的领域状态。根据应用程序的需求,您始终可以扩展该类并引入自己的领域状态。
ACCEPTEDAUTHENTICATEDAUTHORIZEDCREATEDDELETEDERRORFAILUREFOUNDNOT_ACCEPTEDNOT_AUTHENTICATEDNOT_AUTHORIZEDNOT_CREATEDNOT_DELETEDNOT_FOUNDNOT_UPDATEDNOT_VALIDPROCESSINGSUCCESSUPDATEDVALID
这些状态可以在应用程序的显示/视图层用来处理通过Payload::getOutput().
示例¶
<?php
use Application\Models\Reports;
use Phalcon\Domain\PayloadFactory;
use Phalcon\Domain\Payload\Status;
use Phalcon\Mvc\Controller;
class ReportsController extends Controller
{
    public function viewAction(int $reportId)
    {
        $factory = new PayloadFactory();
        $payload = $factory->newInstance();
        $report = Reports::find(
            [
                'conditions' => 'reportId = :reportId:',
                'bind'       => [
                    'reportId' => $reportId,
                 ],
            ]          
        );
        if (false === $report) {
            $payload
                ->setStatus(Status::NOT_FOUND)
                ->setInput(func_get_args())
            ;
        } else {
            $payload
                ->setStatus(Status::FOUND)
                ->setOutput($report)
            ;
        }
        return $payload;
    }
}