Cakephp PHP WEB開発

【Cakephp4】$requestはprotectedに。継承しない場合getRequest()を利用

※本サイトはPR表記を含みます。

Cakephpを利用していると、必ず利用するであろう ServerRequestオブジェクト

POSTでぶん投げたデータを $this->request->getData() などでユーザーの入力データを扱うことができますが、実は3系からで(一部使い方により)非推奨になります。

具体的には Component などで getController() する際は、getRequest() として書いてね。ということらしいです。

■ Cake4からアクセサが protected になるので getRequest() / setRequest() でヨロ

https://github.com/cakephp/cakephp/blob/359fb41445a63cdf877f6c34401d6dcdf9179c9b/src/Controller/Controller.php#L121-L141

なので、デフォルト Controllerを利用する場合、親を継承するので $this->request->getData() は有効です。

現在は Cake4 が最新なので、これから利用する人はもちろん、今後は $request 書くなら、どちらかというと getRequest() 方にすると良いかと思います(宗教かも)

Cake5 Controller内でも$request は利用されているので実際利用できなくなることは未定(お兄ちゃんから教えてもらった)

// ControllerなどでGET

$this->request->getData();

// 推奨(別に)
$this->getRequest()->getData();

// ControllerなどでSET

$this->request = $this->request->getData();

// 推奨(別に)
$this->setRequest($this->getRequest->getData());

ちなみにテンプレート(View)は非推奨ではないらしいです。

-Cakephp, PHP, WEB開発
-