cakephp の element の多重呼び出しでの変数渡し
久しぶりに cakephp の tips みたいなものでも.
element を多重呼び出ししているときに変数を渡そうとしたときにちょっとはまったので.
$a, $b って変数を使って element foo 中で変数 $a を使っている場合,
$this->element('foo');
だけで $a は渡せます.$b を $a として渡したいときには
$this->element('foo', ['a' => $b]);
ですね.
で,問題なのはその先.element foo から element bar を呼び出していて,bar 中で $a を使っているとき.
説明しにくいね.
C とかの関数で書くとこういう感じかな.
foo (a) { bar(a); } bar (a) {}
な関数に対してのこと.
この場合.$a に $b を渡したいと思って,
$this->element('foo', ['a' => $b]);
とやっても bar 中は $b を使ってくれないのね.グローバルに $a が設定されているから $a が自動的に使われるみたい.
foo 中で bar を呼び出すときに明示的に
$this->element('bar', ['a' => $a]);
って記述しておかないとダメみたい.
ふーん.
10分ほど悩んでしまいました.
あまり詳しく追っ掛けてないんだけど,php の言語仕様からくる制限なのかな?それとも cakephp の制限?
まぁ,時間のあるときにちょっと追っ掛けてみるかなって感じ.