En nuestro sitio web dividiremos nuestros principales tipos de modelos en subtipos. (que describimos abajo). Por ejemplo tendremos:
Forms. Los formularios son modelos cuyo propósito es recolectar los datos
ingresados por el usuario. Los formularios son subtipos de entidades.
Generalmente guardaremos los formularios en la carpeta
APP_DIR/module/Application/src/Form
.
Filters. Los filtros se diseñan para transformar los datos de entrada. Los
filtros son un subtipo de servicios. Los filtros se guardan generalmente
en la carpeta APP_DIR/module/Application/src/Filter
.
Validators. Los validadores se usan para revisar la corrección de los
datos de entrada. Los validadores son subtipos de servicios. Generalmente
guardamos los validadores en la carpeta APP_DIR/module/Application/src/Validator
.
View Helpers. Los ayudantes de vista encapsulan algunas funcionalidades
que se imprimen en las páginas. Ellos son similares a los servicios.
Guardamos generalmente a los ayudantes de vista en la carpeta
APP_DIR/module/Application/src/View/Helper
.
Routes. Las rutas son un modelo de servicio específico que se usa para
implementar reglas a la medida de asociación entre URL y controladores.
Generalmente guardamos las rutas a la medida en la carpeta
APP_DIR/module/Application/src/Route
.
Así, eventualmente tendremos la siguiente estructura de carpetas para nuestro módulo del sitio web:
/Application/src
/Controller
/Factory
/Plugin
/Factory
/Entity
/Filter
/Form
/Repository
/Route
/Service
/Factory
/Validator
/ValueObject
/View
/Helper
/Factory
Es posible tener arbitrariamente subtipos de modelos. Mientras más compleja es nuestra aplicación más subtipos de modelos podemos tener.