Capa de Aplicación

La capa de aplicación es la encargada de coordinar los casos de uso del sistema. Su función principal es actuar como intermediaria entre la capa de dominio, donde se encuentra la lógica de negocio, y las capas externas como controladores, APIs o interfaces de usuario.

A diferencia de la capa de dominio, que contiene reglas de negocio puras, la capa de aplicación orquesta operaciones utilizando las entidades y repositorios definidos en el dominio.

En otras palabras, esta capa responde a la pregunta:

¿Qué acciones puede realizar el sistema?

Por ejemplo:

Estas acciones se implementan mediante casos de uso (Use Cases).

¿Qué responsibilidades tiene la Capa de Aplicación?

Las principales responsabilidades de esta capa son:

Es importante destacar que la capa de aplicación no contiene lógica de negocio compleja, ya que esta debe pertenecer al dominio.

Ejemplo de caso de uso

Supongamos que queremos implementar la funcionalidad de crear una nueva tarea.

Para ello creamos el siguiente caso de uso:

CreateTaskUseCase

Este caso de uso se encargará de:

Ejemplo de implementación

<?php

namespace App\Application\Task;

use App\Domain\Task\Repositories\TaskRepositoryInterface;
use App\Domain\Task\Entities\Task;
use App\Domain\Task\ValueObjects\TaskTitle;

class CreateTaskUseCase
{
    private TaskRepositoryInterface $repository;

    public function __construct(TaskRepositoryInterface $repository)
    {
        $this->repository = $repository;
    }

    public function execute(string $title): Task
    {
        // Crear el value object con la validación del dominio
        $taskTitle = new TaskTitle($title);

        // Crear la entidad del dominio
        $task = new Task(null, $taskTitle);

        // Guardar la tarea utilizando el repositorio
        return $this->repository->save($task);
    }
}
Anterior: Capa de DominioSiguiente: Infraestructura