CakePHP

コントローラのユニットテスト

コントローラテストの概要 tests/TestCase/Controller 配下に テストクラスの ファイルを作成する。以下はArticlesコントローラに対するテストクラスArticlesControllerTestクラスの作成例。

テーブルクラスのテスト

Articleテーブルのテスト。公開済みの記事を取得するfindPublished()メソッドを持つ。 where([ $this->alias() . '.published' => 1 ]); return $query; } } tes…

フィクスチャ

フィクスチャ テストコードの挙動がデータベースやモデルに依存するとき、テストに使うためのテーブルを生成し、 一時的なデータをロードするために フィクスチャを使うことができる。 フィクスチャを使うことにより、 実際のアプリケーションに使われている…

テスト

テストケースの規約 テストを含むPHPファイルは、 tests/TestCase/[Type] ディレクトリーに置く ファイル名はFooBarTest.php とする テストを含むクラスは Cake\TestSuite\TestCase 、 Cake\TestSuite\IntegrationTestCase または \PHPUnit\Framework\TestCa…

エラーと例外処理

cakePHPでは、エラー処理と例外処理が用意されている。PHPエラーはトラップされ、表示またはログに記録される。キャッチされなかった例外はエラーページに自動的にレンダリングされる。 例外処理の設定 例外処理の設定はconfig/app.phpで行われる。デフォル…

コレクション

コレクションクラスは、配列(またはTraversableオブジェクト)を操作するためのメソッドを提供する。 コレクションの生成 反復処理に関するメソッド each コレクション内の各オブジェクトに対して関数を実行する。 each(function ($value, $key) { echo "…

フォームコントロール

フォームコントロールの生成 control('フィールド名', [オプション配列]); を使うと完全のフォームコントロールを生成できる。 Form->create($user); echo $this->Form->control('username'); echo $this->Form->control('password'); // 'approved' を date…

フォーム

フォームの開始 エンティティの新規登録と編集フォームはどちらも以下のロジックから開始される。 $articleが空のエンティティの場合、新規登録フォームが生成される。 $articleが既存のエンティティの場合、エンティティの編集フォームが生成される。 Form-…

アソシエーション

アソシエーション アソシエーションはテーブルオブジェクトの initialize() の中で定義される。関連付けたいテーブルのエイリアスをメソッドに渡す。デフォルトでは belongsTo('Authors'); } } ?> 関連付けたいテーブルのエイリアスをbefongsToメソッドに渡…

データの削除

エンティティの削除 deleteメソッドでエンティティを削除する。 Articles->get(2); $result = $this->Articles->delete($entity); ?> 連鎖削除 エンティティーを削除するとき関連データを削除することもできる。テーブルの初期化メソッドにおいてHasOne や H…

データの保存 ~リクエストデータからアソシエーションを保存する~

リクエストデータのエンティティへの変換 getData()で取得したリクエストデータをnewEntity()に渡し、エンティティに変換。 newEntity($this->request->getData()); ?> 複数のエンティティを変換する場合、newEntities()を用いる。 '一番目の投稿', 'publis…

データの保存

データの新規作成 データの新規作成は以下の流れで行われる。 newEntity()でエンティティをビルド エンティティのプロパティに値をセット save()でエンティティを保存 get('Articles'); $article = $articlesTable->newEntity(); $article->title = '新しい…

バリデーションとルール

バリデーション リクエストデータがエンティティにコンバートされる前に、データ型や書式のルールが適用される。 newEntity($this->request->getData()); if ($article->errors()) { // エンティティー検証失敗。 } ?> エンティティ構築時のバリデーションの…

キャッシュ

FileCache ローカルファイルを使用するキャッシュ。tmp/cache配下にキャッシュファイルを作成し、そこにデータを保存する。 クエリ結果をキャッシュする cacheメソッドでクエリ結果をキャッシュする。第一引数にキャッシュキーを渡す。 cache('recent_articl…

【Table】関連データの取得

関連データの取得 containメソッド containで関連データをeagar loadして取得する。 find('all')->contain(['Authors', 'Comments']); ?> ネストされた関連データを取得するときはドット記法を用いる。 find()->contain([ 'Authors.Addresses', 'Comments.Au…

【Table】データの取り出し

クエリの生成 findメソッド findメソッドでクエリを生成。 find('all'); // この時点ではクエリーは走らない。 $results = $query->all(); // all() の呼び出しはクエリーを実行し、結果セットを返す foreach ($query as $row) {...} // イテレーションはク…

エンティティ

テーブルとエンティティ テーブル データのコレクションにアクセスする。新しいレコードを保存したり、 既存データの編集/削除、リレーションの定義、そして一括処理ができる。 エンティティ レコードレベルの振る舞いや機能の定義を行う。 エンティティの生…

テーブル

テーブルとエンティティ テーブル データのコレクションにアクセスする。新しいレコードを保存したり、 既存データの編集/削除、リレーションの定義、そして一括処理ができる。 エンティティ レコードレベルの振る舞いや機能の定義を行う。 テーブルオブジェ…

コンポーネント

コンポーネントの読み込みと設定 initializeメソッド内でloadComponentを使用する。 loadComponent('Auth', ['authorize' => 'Controller']); $this->loadComponent('Cookie', ['expires' => '1 day']); } } ?> あるいは、configによって実行時に…

ヘルパー

ヘルパーファイルの作成 src/View/Helper内にヘルパーファイルを作成し、メソッドを定義する。 AppView.phpの記述 src/View/AppView.phpのinitializeメソッド内でヘルパーを読み込む。

ビュー

ビューのメソッド set('color', 'pink'); // ビューのヘルパーやテーマをカスタマイズする $this->viewBuilder() ->setLayout('admin') ->helpers(['MyCustom']) ->theme('Modern') ->className('Modern.Admin'); // ビューファイルのレンダリング $this->re…

リクエストオブジェクト

$this->requestにリクエストオブジェクトが設定される。 ルーティングパラメータを取得 getParamでルーティングパラメータを取得。 request->getParam('controller'); // 現在のリクエストを処理するコントローラ $this->request->getParam('action'); // 現…

ルーティング

ルーティング 名前の変更 ルーティングの一般的な役割は、コントローラとそのアクションの名前を変更すること。 /users/some_action/5 でUsersコントローラにアクセスするのではなく、/cooks/some_action/5でアクセスすることができる。 connect( '/cooks/:a…