Rewrite of Design Patterns sub-section.

This commit is contained in:
Steven Benner
2012-07-15 05:02:06 -07:00
parent f19396576f
commit a4e0494ddf

View File

@@ -2,39 +2,16 @@
isChild: true
---
# Application Design Patterns
## Design Patterns
There are numerous ways to structure your web applications, and you can put as much or as little thought as you like
into architecting your code. But it is usually a good idea to follow to one of the common patterns because it will make
your code easier to manage and easier for others to understand.
When you are building your application it is helpful to use common patterns in your code and common patterns for the
overall structure of your project. Using common patterns is helpful because it makes it much easier to manage your code
and lets other developers quickly understand how everything fits together.
The most common patterns used in PHP development today are the front controller pattern and the MVC pattern (and its
relatives).
If you use a framework then most of the higher level code and project structure will be based on that framework, so a
lot of the pattern decisions are made for you. But it is still up to you to pick out the best patterns to follow in the
code you build on top of the framework. If, on the other hand, you are not using a framework to build your application
then you have to find the patterns that best suit the type and size of application that you're building.
* [Architectural patterns on Wikipedia](https://en.wikipedia.org/wiki/Architectural_pattern)
* [Software design pattern on Wikipedia](https://en.wikipedia.org/wiki/Software_design_pattern)
## Front Controller
The front controller pattern is where you have a single entrance point for you web application (e.g. index.php) that
handles all of the requests. This code is responsible for loading all of the dependencies, processing the request and
sending the response to the browser. The front controller pattern can be beneficial because it encourages modular code
and gives you a central place to hook in code that should be run for every request (such as input sanitization).
* [Front Controller pattern on Wikipedia](https://en.wikipedia.org/wiki/Front_Controller_pattern)
## Model-View-Controller
The model-view-controller (MVC) pattern and its relatives HMVC and MVVM let you break up code into logical objects that
serve very specific purposes. Models serve as a data access layer where data it fetched and returned in formats usable
throughout your application. Controllers handle the request, process the data returned from models and load views to
send in the response. And views are display templates (markup, xml, etc) that are sent in the response to the web
browser.
MVC is the most common pattern used in the popular [PHP frameworks](https://github.com/codeguy/php-the-right-way/wiki/Frameworks).
Learn more about MVC and its relatives:
* [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller)
* [HMVC](https://en.wikipedia.org/wiki/Hierarchical_model%E2%80%93view%E2%80%93controller)
* [MVVM](https://en.wikipedia.org/wiki/Model_View_ViewModel)