# ApPHP Framework

ApPHP MVC Framework is a web application framework that is designed to provide modern and rapid development of websites, web applications and web services.
It implements the the Model-View-Controller (MVC) design pattern and principles, including separation of display, logic, and data layers. It provides a special architecture, components for database access, templating, session management and many other tools for developers to build a complex web applications faster and safer.
Choosing ApPHP MVC Framework allows you to release your applications earlier, host and scale them without problem, and maintain them over time with easy.

#### MVC

Like most modern web programming frameworks, ApPHP Framework has been developed in accordance with the MVC pattern ("Model-View-Controller"). The MVC requires that the entire software logic should be separated into three loosely bound parts (layers):

- Data management layer (Model)
- View presentation layer
- Business logic layer (Controller) which is responsible for receiving, validating and processing user requests as well as for obtaining data from the model (database) and preparing them for proper displaying in users' browsers

For more information: MVC (Wikipedia)

#### HTTP request processing scheme

1. A user request is received for processing by the main dispatching file.
2. Framework kernel parses the requested URL.
3. The routing system determines which application must be requested and which action it must execute according to the URL contents.
4. For each application action, the appropriate controller is located which handles further request processing.
5. The controller executes business logic and requests data from the database using model classes where necessary.
6. To generate the resulting web page, the controller consecutively calls methods of one or more action classes.
7. The data returned by actions are passed on to the template engine to generate the resulting HTML code.
8. The template engine generates HTML code using the received data and the specified template files.