CakePHPはオープンソースのWebフレームワークです。モデル・ビュー・コントローラー(MVC)アプローチを採用し、 PHPで記述されており、 Ruby on Railsの概念をモデルにしており、MITライセンスの下で配布されています。[ 2 ]
CakePHPは、設定よりも規約、モデル・ビュー・コントローラー、アクティブレコード、関連付けデータマッピング、フロントコントローラーなど、よく知られたソフトウェアエンジニアリングの概念とソフトウェア設計パターンを使用しています。
CakePHPは2005年4月にポーランドのプログラマー、ミハル・タタリノヴィチ[ 3 ]がPHPで高速アプリケーション開発フレームワークの最小限のバージョンを作成し、Cakeと名付けたことから始まった。[ 4 ] [ 5 ] [ 6 ]彼はこのフレームワークをパブリックドメインライセンス(すぐにMITライセンスに変更)で公開し、オンラインの開発者コミュニティに開放した。
2005年12月、L. MastersとGJ WoodworthはCakePHPに関連する開発を促進するためにCake Software Foundationを設立した。[ 6 ]バージョン1.0は2006年5月にリリースされた。
このプロジェクトのインスピレーションの一つはRuby on Railsで、そのコンセプトの多くを採用しています。その後、コミュニティは成長し、いくつかのサブプロジェクトを生み出しました。[ 7 ] [ 8 ]
2009年10月、プロジェクトマネージャーのウッドワースと開発者のN.アベルは、 Lithiumウェブフレームワーク(以前はCakePHPプロジェクトの一部だった)を含む自身のプロジェクトに専念するため、プロジェクトを辞任した。残りの開発チームは、以前に定義された当初のロードマップに引き続き注力した。[ 9 ]
プラグインを使用すると、開発者はコントローラー、モデル、ビュー、その他のクラスの組み合わせをパッケージ化して、複数のアプリケーションや他の開発者が再利用できるようになります。CakePHP 3 以降、 Composer を使用してプラグインをインストールできるようになりました。[ 10 ]
CakePHP ORM(オブジェクトリレーショナルマッピング)は、アクティブレコードパターンとデータマッパーパターンの高度なPHPハイブリッドであり、両方のコアコンセプトを取り入れています。CakePHP ORMは、データベーステーブルを表すテーブルクラスと、個々のテーブル行を表すエンティティクラスの2つの主要なオブジェクトタイプを使用します。[ 11 ]
クエリビルダーは、新しいORMの補助機能としてCakePHP 3で導入されました。クエリビルダーは、SQLクエリを手動で記述する代わりに、プログラムで構築するためのクラスとメソッドのセットを提供します。ORMはクエリビルダーを幅広く利用しています。[ 12 ]
ルーティングとリバースルーティング。CakePHPルーターは、複雑なHTTPアプリケーションルーティングを可能にし、受信リクエストを適切なコントローラーとアクションにルーティングします。リバースルーティングは、ルートとリンク間の関係を作成し、リンクが常に正しいUniform Resource Locatorで生成されるようにします。
ビューセルは、ビューロジックを呼び出し、テンプレートをレンダリングできる小型のミニコントローラを提供します。これらは、小さくて再利用可能なページコンポーネントを作成するのに最適です。
マイグレーションは、データベーススキーマのバージョン管理機能を提供します。これにより、アプリケーションロジックの変更とそれに対応するデータベースの変更が常に同期されるようになります。これは、CakePHPアプリケーションのデプロイだけでなく、複数開発者チームでの開発作業も大幅に簡素化します。CakePHPのマイグレーションツールは、Phinxプロジェクトをベースにしています。
ORMやクエリビルダーによって生成された結果セットを開発者が簡単にページ分割できるようにするための自動ページネーション機能。
フォームビルダーとバリデーターを使用すると、データ型と検証の両方についてモデルレイヤーに関連付けられたフォームをプログラムで生成できます。 [ 13 ]
CakePHP Bakeは、アプリケーション、スケルトン、ボイラープレートコードを自動生成するツールです。既存のデータベーススキーマを使用して正しいデータリレーションとデータ型を推論し、それを使用してコントローラー、モデルオブジェクト、ビューテンプレートの完全なセットを生成します。コーディングなしで基本的なCRUDアプリケーションを生成できます。 [ 14 ]