Dominio (Domain)

El componente de dominio incorpora componentes que se utilizan para la implementación del patrón Respondedor de Dominio de Acción (ADR) y también se pueden usar al implementar Diseño Dirigido por Dominio.
Carga útil
El Respondedor de Dominio de Acción requiere un mecanismo de transferencia de datos entre las tres capas para servir su aplicación. El Phalcon\Domain\Payload es un objeto de transferencia de datos que se utiliza para enviar datos entre las tres capas del patrón.
<?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:
extras
: Información extra
input
: Entrada
messages
: Mensajes
status
: Estado
output
: Salida
El componente ofrece getters y setters para las propiedades anteriores.
NOTA: Todos los setters regresan un objeto Phalcon\Domain\Payload, que te permite encadenar llamadas para una sintaxis más fluida.
Fábrica (Factory)
También está disponible Phalcon\Domain\PayloadFactory, ofreciendo una forma fácil de generar nuevos objetos de Payload.
<?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.
ReadableInterface
: contiene solo métodos de lectura
WritableInterface
: contiene solo métodos de escritura
PayloadInterface
: contiene ambos métodos de escritura y lectura
Valores de estado
La clase Phalcon\Domain\Payload\Status contiene varias constantes para ayudar con el estado de dominio de tus objetos de Payload. 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