This post will serve as an outline of the Application Development Deep Dive series of articles that will be published throughout the coming days / weeks. The source code is an application that started as an example to a friend of how to build a simple application that would facilitate the prototyping of "website" designs (templates/javascript/css). Its framework agnostic although it does use libraries/components from Laminas/Mezzio/Symfony etc. The thought then occurred to me that I could highlight the building of this application as a walk through for Web Application development. Subject matter for which @Cedric requested a series of articles.
Requirements/Features already provided by the application and subject matter that will be covered.
Requirements/Features already provided by the application and subject matter that will be covered.
- Leverage a template engine to facilitate the building of a "Website" design. Basically the structure of the site and allow for prototyping its html pages etc.
- Provide examples of object oriented best practice.
- Support for common site header and footer.
- Support for asset management i.e. script files, stylesheets etc. To include versioned asset usage.
- Adhere to KISS & DRY. For those not in the know for software acronyms those mean. Keep It Simple Stupid and Don't Repeat Yourself.
- Provide a foundation that will support the second series of articles which will be DevOps, CI/CD oriented. But will use the same code base for the examples.
- Application data and configuration will be provided solely via php arrays for simplicity.
- Provide support for configuration override via config file globbing and array merging strategies.
- Provide in-depth usage examples for PSR compliant library integration through real world implementations.
- Provide a means of extending functionality without having to modify the core application through the use of helpers / listeners / delegated and/or overridden services.
- Provide a means of detecting and responding correctly to Ajax request. (components are in place for this, but it will be presented in a refactor in iteration 2 - 3).
- Contextual examples of proper output escaping.
- Provide a means of facilitating proper content negotiation throughout the application request/response lifecycle.