CakePHP初学者がコーディングの時にget/set/withの使い方で迷ったのでクラス別にまとめました。
バージョン:
PHP7.4
CakePHP3.9
リクエストクラス
参考:
https://book.cakephp.org/3/ja/controllers/request-response.html
getParam
ルーティングパラメーターなどを取得する
$controllerName = $this->request->getParam('controller');
getQuery
クエリー文字列パラメーター
キーが存在しない場合nullが返る
// URL は /posts/index?page=1&sort=title
$page = $this->request->getQuery('page');
getQueryParams
全てのクエリー文字列パラメーターにアクセスできる
$query = $this->request->getQueryParams();
ここのページも分かりやすかった
https://qiita.com/egcmrsk/items/5312e81a366c6a6a8209
getQueryParams()について下記のような記載があるけど公式のサンプルコードとの差が理解できず、、
// GET
$this->request = $this->request->withQueryParams([
'year' => date('Y'),
'month' => date('n')
]);
getData
リクエストのボディーデータ、全てのPOSTデータはこれを使いアクセスする
キーが存在しなければnullを返す
// name 属性が 'MyModel[title]' の入力は次のようにアクセスします。
$title = $this->request->getData('MyModel.title');
レスポンスクラス
withData
getParsedBody
エンティティクラス
参考:
https://qiita.com/satthi/items/59b689df628a0fcc2ce0
set
テーブルクラスでnewする時など、
get
ビューで呼び出すときなど
おまけ:アクセサーとミューテーター
参考:
https://hacknote.jp/archives/55024/
アクセサーとは、、
プロパティを取得する時に使用する
echo $book->name;
echo $book->get('name');
ミューテーターとは、、
プロパティを設定する時に使用する
$book->name = 'harry potter'; //HARRY POTTER
$book->set('name', 'Harry Potter'); //HARRY POTTER
テーブルクラス
参考:
https://book.cakephp.org/3/ja/orm/table-objects.html
setTable
テーブルを指定、initialize()に記載するのはこちら
getTable
実際に活用する時に使う、単体での処理としてはクエリの実行のためにテーブル名そのもの(string)を返す
※上記は昔のバージョンではtable()として存在して、メソッド内で引数の状態によって処理を分けていたようです。
getRegistryAlias
テーブルインスタンスを作るためにレジストリーキーを取得する
モータルメソッド仕様では引数がnullならgetとして扱っていた
setRegistryAlias
レジストリーキーをセットする
モータルメソッド仕様では引数がnullでない場合引数をセットしていた
おまけ:
インスタンスを取得するのはTableRegistry