Secciones

Domain


In future versions of Phalcon, this component will be reworked to follow the Payload Interop interface.

The domain component incorporates components that are used for the implementation of the Action Domain Responder (ADR) pattern and can also be used when implementing Domain Driven Design.

Carga útil

The Action Domain Responder requires a data transfer mechanism between the three layers to serve your application. The Phalcon\Domain\Payload is a data transfer object that is used to send data between the three layers of the pattern.

<?php

use Phalcon\Domain\Payload;

$payload = new Payload();

Al usar este objeto, puede establecer su estado, la entrada, la salida, cualquier mensaje o información adicional requerida por cada capa de su patrón para ser transferida a la siguiente capa que lo requiere durante el flujo de la aplicación. La clase en sí misma es un envoltorio de datos que contiene la información necesaria para ser pasada entre capas.

Las propiedades almacenadas son:

Propiedad Descripción
extras Extra information
input Entrada
messages Messages
status Estado
output Salida

El componente ofrece getters y setters para las propiedades anteriores.

NOTE: All the setters return a Phalcon\Domain\Payload object, which allows you to chain calls for a more fluent syntax.

Fábrica (Factory)

Phalcon\Domain\PayloadFactory is also available, offering an easy way to generate new Payload objects.

<?php
use Phalcon\Domain\PayloadFactory;

$payloadFactory = new PayloadFactory();
$payload = $payloadFactory->newInstance();
?>

Interfaces

Hay tres interfaces que se pueden aprovechar si se desea ampliar el objeto.

Interface Descripción
ReadableInterface contains only read methods
WritableInterface contains only write methods
PayloadInterface contains both read and write methods

Valores de estado

The Phalcon\Domain\Payload\Status class contains several constants to help with the domain status of your Payload objects. Siempre puede extender la clase e introducir sus propios estados de dominio, dependiendo de las necesidades de su aplicación.

  • ACCEPTED
  • AUTHENTICATED
  • AUTHORIZED
  • CREATED
  • DELETED
  • ERROR
  • FAILURE
  • FOUND
  • NOT_ACCEPTED
  • NOT_AUTHENTICATED
  • NOT_AUTHORIZED
  • NOT_CREATED
  • NOT_DELETED
  • NOT_FOUND
  • NOT_UPDATED
  • NOT_VALID
  • PROCESSING
  • SUCCESS
  • UPDATED
  • VALID

Estos estados pueden ser usados en la capa de visualización/vista de su aplicación para procesar los objetos de dominio recuperados a través de Payload::getOutput().

Ejemplo

<?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;
    }
}   

Enlaces