コントローラー内の各ファンクションで色々とプログラムを書いていると、各ファンクションで共通の変数が出てくることが多々ある。

それはそう、同じコントローラーなんだから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->変数名という形にするということ。