CakePHP
   HOME

TheInfoList



OR:

CakePHP is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
web framework A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and ...
. It follows the
model–view–controller Model–view–controller (MVC) is a software architectural pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. This is done to separate internal representations of infor ...
(MVC) approach and is written in
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
, modeled after the concepts of
Ruby on Rails Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and we ...
, and distributed under the
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
. CakePHP uses well-known
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
concepts and
software design pattern In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code ...
s, such as
convention over configuration Convention over configuration (also known as coding by convention) is a software design paradigm used by software frameworks that attempts to decrease the number of decisions that a developer using the framework is required to make without necessa ...
,
model–view–controller Model–view–controller (MVC) is a software architectural pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. This is done to separate internal representations of infor ...
,
active record In software engineering, the active record pattern is an architectural pattern. It is found in software that stores in-memory object data in relational databases. It was named by Martin Fowler in his 2003 book ''Patterns of Enterprise Application ...
, association data mapping, and
front controller The front controller software design pattern is listed in several pattern catalogs and is related to the design of web applications. It is "a controller that handles all requests for a website," which is a useful structure for web application dev ...
.


History

CakePHP started in April 2005, when a Polish programmer Michal Tatarynowicz wrote a minimal version of a
rapid application development Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
framework in
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
, dubbing it Cake. He published the framework under the MIT license, and opened it up to the online community of developers. In December 2005, L. Masters and G. J. Woodworth founded the Cake Software Foundation to promote development related to CakePHP. Version 1.0 was released in May 2006. One of the project's inspirations was
Ruby on Rails Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and we ...
, using many of its concepts. The community has since grown and spawned several sub-projects. In October 2009, project manager Woodworth and developer N. Abele resigned from the project to focus on their own projects, including the Lithium web framework (previously part of the CakePHP project). The remaining development team continued to focus on the original roadmap that was previously defined.


Features

''Plugins'' allow developers to package combinations of controllers, models, views and other classes for reuse in multiple applications and by other developers. Since CakePHP 3 it has been possible to install plugins using
Composer A composer is a person who writes music. The term is especially used to indicate composers of Western classical music, or those who are composers by occupation. Many composers are, or were, also skilled performers of music. Etymology and Defi ...
. ''CakePHP ORM'' ( object-relational mapping) is an advanced PHP hybrid of the active record pattern and the
data mapper pattern In software engineering, the data mapper pattern is an architectural pattern. It was named by Martin Fowler in his 2003 book ''Patterns of Enterprise Application Architecture''. The interface of an object conforming to this pattern would include fu ...
, borrowing core concepts from both. The CakePHP ORM uses two primary object types, the table class representing database tables, and entity classes representing individual table rows. ''Query builder'' was introduced in CakePHP 3 as a companion to the new ORM. The query builder provides a set of classes and methods for programmatically building SQL queries instead of writing them by hand. The ORM makes extensive use of the query builder. ''Routing and reverse routing''. The CakePHP router allows for complex
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
application routing, routing incoming requests to the correct controller and action. Reverse routing creates a relationship between routes and links, ensuring that links are always generated with the correct
uniform resource locator A Uniform Resource Locator (URL), colloquially termed as a web address, is a reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific type of Uniform Resource Identifi ...
. ''View Cells'' provide small, mini-controllers that can invoke view logic and render templates. These are ideal for creating small, reusable page components. ''Migrations'' provide
version control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
for database schemas. These make it possible to ensure that changes to application logic and corresponding database changes are kept synchronised. This greatly simplifies both CakePHP application deployment, but also development in multi-developer teams. The CakePHP migration tool is based on the Phinx project. ''Automatic pagination'' to make it easy for developers to paginate result sets generated by the ORM or Query Builder. ''Form builder and validator'' allows for the programmatic generation of
forms Form is the shape, visual appearance, or configuration of an object. In a wider sense, the form is the way something happens. Form also refers to: *Form (document), a document (printed or electronic) with spaces in which to write or enter data * ...
that are tied to the model layer for both data types and validation. ''CakePHP Bake'' is a tool for automatically generating application
skeletons A skeleton is the structural frame that supports the body of an animal. There are several types of skeletons, including the exoskeleton, which is the stable outer shell of an organism, the endoskeleton, which forms the support structure inside ...
and boilerplate code. It uses a pre-existing database schema to infer the correct data relations and data types and using that to generate a full set of controllers, model object and view templates. It can generate a basic
CRUD In computer programming, create, read, update, and delete (CRUD) are the four basic operations of persistent storage. CRUD is also sometimes used to describe user interface conventions that facilitate viewing, searching, and changing information u ...
application with zero coding.


Conferences


Training

Official online training courses sponsored by CakeDC. Monthly live training covering a range of topics including: * Standard CakePHP 2 Training Course * Standard CakePHP 3 Training Course * Advanced CakePHP 3 Training Course * Standard CakePHP 4 Training Course


See also

* Comparison of web frameworks


References


Bibliography

* * * *


External links

* *
CakePHP 2 Application Cookbook
{{DEFAULTSORT:Cakephp Free computer libraries Free software programmed in PHP PHP frameworks Web frameworks Template engines Software using the MIT license