CakePHP is an open source web application framework. It follows the Model-View-Controller (MVC) approach and is written in PHP, modeled after the concepts of Ruby on Rails, and distributed under the MIT License.

1) Humanize the database :-

SQL’s INSERT, SELECT, UPDATE, and DELETE and the accompanying syntax could benefit from an upgrade. These statements correspond to the most common web app database operations: create, read, update, delete (often abbreviated CRUD). Logically, CakePHP provides a CRUD abstraction using the ActiveRecord design pattern. The ActiveRecord approach wraps the database table and row in a php class. This way, developers do not have to switch from thinking about php to SQL when writing their applications

2) MVC architecture:-

After writing a “quick” web app by mixing together html, php, and SQL in the same file it is quickly apparent that the code is difficult to understand and not maintainable. By making different parts of a web application modular and loosely connected, parts can be swapped in and out or changed quickly. This is what MVC is. It is a way to make the main mechanisms of a web application – the model, the view, and the controller - separate from each other. This way a designer, who would be in charge of the views, can be isolated from the details of the database (model) or business logic (controller). I will go into more depth about MVC in the example.

3) Application scaffolding :-

About 80% of the time, a field in a form corresponds directly to a field in a database. Before scaffolding, developers would have to write code that would make an input field in a web form, verify what was inputted into the web form matches the type the database is expecting, create a new row in the database to store the data, and then store the data. With scaffolding, this process is done automatically. The developer defines what they want in the database and the framework does the rest. Scaffolding is implemented in CakePHP by restricting the name of components. By doing this CakePHP is able to determine relationships between the components of the system.

4) Code generation:-

Code generation is like bringing scaffolding to the foreground. What this means is that instead of having boilerplate code automatically written behind the scenes, code generation will bring it to the foreground so that it can more easily be modified. Overall, I find this feature and scaffolding complement each other quite nicely. Scaffolding primary use case is to get the code up and running quickly. Code generation allows for the scaffolding to be replaced and or customized- if need be.