コントローラー内の各ファンクションで色々とプログラムを書いていると、各ファンクションで共通の変数が出てくることが多々ある。
それはそう、同じコントローラーなんだからw
その際、同じような記述ばかりしてると、これ共通化すればいいのにとか思っちゃって、そうであれば方法は多分あるよね、と。
メンバ変数とグローバル変数だったかな?
で、そのグローバル変数を設定することにより同コントローラーのどのファンクションでも使える変数となるのだけど、cakePHPとかLaravelとか余計なことするとすぐエラー吐き出し面倒になる。
だから、今のうちに記録してメモとしときます。
多分cakePHP4でも使えるはず。
例として、Webrootのパスを準備する場合、
class HogehogeController extends AppController {
public $webrootUrl; // 共通変数の準備
public function initialize(): void
{
parent::initialize();
$this->webrootUrl = Router::url('/', true); // WebrootのURLを代入
$this->set('webroot', $this->webrootUrl); // どのファンクションのViewでも使えるように
}
public function index() {
$webroot = $this->webrootUrl; // 使う時は$this->変数名で取り出せる
}
}
値を取り出すときは$this->変数名という形にするということ。