{{short description|Open-source web framework in PHP}} {{Infobox software | name = CakePHP | logo = Cake-logo.png | developer = [http://cakefoundation.org/ Cake Software Foundation, Inc.] | released = {{release date and age|2005|04}} | latest release version = <!-- If you update Template:CakePHP version, it will automatically update this page and Comparison of web frameworks{{dn|date=August 2022}}--> {{CakePHP version}} | latest release date = {{CakePHP version|releasedate}} | latest preview version = | latest preview date = | programming language = PHP | operating system = Cross-platform | platform = PHP 8.1+ | language = Multilingual | genre = Web framework | license = MIT License | website = {{Official URL}} }} '''CakePHP''' is an open-source web 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.<ref>{{cite web|url = http://book.cakephp.org/3.0/en/intro.html|title = CakePHP Manual - CakePHP at a Glance|access-date = 2015-03-09}}</ref>
CakePHP uses well-known software engineering concepts and software design patterns, such as convention over configuration, model–view–controller, active record, association data mapping, and front controller.
== History ==
CakePHP started in April 2005, when the Polish programmer Michal Tatarynowicz<ref>{{cite web|url=https://cakephp.lighthouseapp.com/contributors|title=Contributors - cakephp|website=cakephp.lighthouseapp.com}}</ref> wrote a minimal version of a rapid application development framework in PHP, dubbing it Cake.<ref>{{cite web|url=https://book.cakephp.org/1.1/en/introduction-to-cakephp.html|title=Introduction to CakePHP - 1.1|website=book.cakephp.org}}</ref><ref>{{cite web |url=http://neurowww.cwru.edu/cakephp/history_of_cakephp |title=Cakephp:history_of_cakephp [Neurosciences] |access-date=2012-08-31 |archive-url=https://web.archive.org/web/20160303211002/http://neurowww.cwru.edu/cakephp/history_of_cakephp |archive-date=2016-03-03 |url-status=dead }}</ref><ref name="colorado">{{cite web|url=http://www.cs.colorado.edu/~kena/classes/5448/s11/presentations/cakephp.pdf |title=Listing |website=www.cs.colorado.edu |access-date=2019-07-01}}</ref> He published the framework under the Public Domain license - which was soon changed to MIT License - and opened it up to the online community of developers.{{fact|date=January 2020}}
In December 2005, L. Masters and G. J. Woodworth founded the Cake Software Foundation to promote development related to CakePHP.<ref name="colorado"/> Version 1.0 was released in May 2006.
One of the project's inspirations was Ruby on Rails, using many of its concepts. The community has since grown and spawned several sub-projects.<ref>{{cite web | url=http://cakeforge.org | title=CakeForge | access-date=2009-09-05 | url-status=dead | archive-url=https://web.archive.org/web/20090908212814/http://cakeforge.org/ | archive-date=2009-09-08 }}</ref><ref>{{cite web | url=http://thechaw.com | title=TheChaw | access-date=2009-09-05 }}</ref>
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.<ref>{{cite web | url=http://bakery.cakephp.org/articles/markstory/2009/10/23/the-cake-is-still-rising | title=The Cake is Still Rising | access-date=2009-10-25 | archive-url=https://web.archive.org/web/20101010183332/http://bakery.cakephp.org/articles/markstory/2009/10/23/the-cake-is-still-rising | archive-date=2010-10-10 | url-status=dead }}</ref>
== 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.<ref>{{Cite web|url = https://book.cakephp.org/4/en/plugins.html | title=Plugins | access-date=2020-03-13}}</ref>
''CakePHP ORM'' (object-relational mapping) is an advanced PHP hybrid of the active record pattern and the data mapper pattern, 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.<ref>{{Cite web|url = https://book.cakephp.org/4/en/orm.html | title=ORM | access-date=2020-03-13}}</ref>
''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.<ref>{{Cite web|url = https://book.cakephp.org/4/en/orm/query-builder.html | title=Query builder | access-date=2020-03-13}}</ref>
''Routing and reverse routing''. The CakePHP router allows for complex HTTP 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.
''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 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 that are tied to the model layer for both data types and validation.<ref>{{Cite web|url = https://book.cakephp.org/4/en/views/helpers/form.html | title=Form helper | access-date=2020-03-13}}</ref>
''CakePHP Bake'' is a tool for automatically generating application, skeletons 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 application with zero coding.<ref>{{Cite web|url = https://www.codeforest.net/cakephp-from-scratch-baking-our-application | title=CakePHP 3: Bake by example | date=31 August 2010 | access-date=2020-03-13}}</ref>
== Conferences ==
{| class="wikitable" |- ! Year<ref>{{Cite web |title=Events |url=https://cakefest.org/archive |access-date=2024-03-21 |website=cakefest.org}}</ref> ! Location |- | 2025 | Madrid, Spain |- |2024 |Esch-sur-Alzette, Luxembourg |- |2023 |Los Angeles, USA |- |2022 |Virtual |- |2021 |Virtual |- |2020 |Virtual |- |2019 |Tokyo, Japan |- |2017 |New York, NY, USA |- |2016 |Amsterdam, Netherlands |- | 2015 | New York, NY, USA |- | 2014 | Madrid, Spain |- | 2013 | San Francisco, CA, USA |- | 2012 | Manchester, UK |- | 2011 | Manchester, UK |- | 2010 | Chicago, IL, USA |- | 2009 | Berlin, Germany |- | 2008 | Buenos Aires, Argentina |- | 2008 | Orlando, FL, USA |}
==See also== *Comparison of web frameworks
==References== {{Reflist}}
===Bibliography=== {{Refbegin}} *{{Cite book |first1 = Jamie |last1 = Munro |date = April 9, 2011 |title = Rapid Application Development With CakePHP |edition = 1st |publisher = Createspace |page = 170 |isbn = 978-1-4609-5439-3 |url = https://www.createspace.com/3571360 |access-date = May 20, 2011 |archive-url = https://web.archive.org/web/20170714100141/https://www.createspace.com/3571360 |archive-date = July 14, 2017 |url-status = dead }} *{{Cite book |first1 = David |last1 = Golding |date = July 21, 2008 |title = Beginning CakePHP: from Novice to Professional |edition = 1st |publisher = Apress |page = 344 |isbn = 978-1-4302-0977-5 |url = http://www.apress.com/book/view/9781430209775 |access-date = 2009-06-12 |archive-url = https://web.archive.org/web/20110112173826/http://apress.com/book/view/9781430209775 |archive-date = 2011-01-12 |url-status = dead }} *{{Cite book |first1 = Kai |last1 = Chan |first2 = John |last2 = Omokore |first3 = Richard |last3 = Miller |date = December 2, 2008 |title = Practical CakePHP Projects |edition = 1st |publisher = Apress |page = 400 |isbn = 978-1-4302-1578-3 |url = http://www.apress.com/book/view/9781430215783 |access-date = 2009-06-12 |archive-url = https://web.archive.org/web/20101223164204/http://apress.com/book/view/9781430215783 |archive-date = 2010-12-23 |url-status = dead }} *{{Cite book |first1 = James |last1 = Watts |first2 = Jorge |last2 = González |date = August 5, 2014 |title = CakePHP 2 Application Cookbook |edition = 1st |publisher = packtpub |page = 346 |isbn = 9781782160083 |url = https://www.packtpub.com/eu/web-development/cakephp-2-application-cookbook |access-date = 2014-08-05 |archive-date = 2020-01-28 |archive-url = https://web.archive.org/web/20200128183140/https://www.packtpub.com/eu/web-development/cakephp-2-application-cookbook |url-status = dead }} {{Refend}}
==External links== * {{Official website}} * {{GitHub|cakephp|CakePHP}} *[https://www.packtpub.com/eu/web-development/cakephp-2-application-cookbook CakePHP 2 Application Cookbook] {{Webarchive|url=https://web.archive.org/web/20200128183140/https://www.packtpub.com/eu/web-development/cakephp-2-application-cookbook |date=2020-01-28 }}
{{PHP}} {{Web frameworks}} {{Portal bar|Free and open-source software}} {{DEFAULTSORT:Cakephp}} Category:Free computer libraries Category:Free software programmed in PHP Category:PHP frameworks Category:Web frameworks Category:Template engines Category:Software using the MIT license