In your website, you will typically divide your principal model types (described above) into subtypes. For example, you will have:
Forms. Forms are models whose purpose is to collect data entered by web user. Forms are a subtype of
entities. You will typically store forms in
Filters. Filters are designed for transforming input data. Filters are a subtype of services.
You will typically store filters in
Validators. Validators are used for checking input data for correctness. Validators are also a subtype of services.
You will typically store validators in
View Helpers. They encapsulate some page rendering functionality. View helpers are similar to services.
You will typically store view helpers in
Routes. Routes are a specific service model used for implementing custom mapping rules between URLs and your
controllers. You will typically store custom routes in
So, eventually you will have the following typical directory structure of your website's module:
/Application/src /Controller /Factory /Plugin /Factory /Entity /Filter /Form /Repository /Route /Service /Factory /Validator /ValueObject /View /Helper /Factory
It is possible to have arbitrarily many model subtypes. The more complex is your application, the more model subtypes you may have.