PHPにcompactという関数がある。
複数の変数から一つの配列を作りたいときに使うものらしい。
例えばCakePHPでビューにデータを送るときなんかに使ったりする。
$data = $this->Model->find('all');
$this->set(compact('data'));
この二行目は以下の一行と同義。
$this->set('data', $data);
まあ、上記のように変数が一つしかないような場合だったらわざわざ$dataに値を入れないでsetの第二引数に直接findを書けば良いけど、複数の変数なんかをまとめてsetしたいときには、わりと便利なのかもしれない。あまり使ったことはないけど。
ただ、注意しとかなきゃいけないのは、compactする場合、変数名にアンダーバーなどを使うとキャメルケースとかいうのにされてしまうということ。
$this->set('sample_data');
みたいな書き方をすると、自動的に変数名はsampledataにさせられる。
この前、初めてcompactを使ったとき、まさにアンダーバーを使った変数名をセットしたばっかりに、ビューの方の挙動がずっとおかしかったのだけど、キャメルケースとかいうものの存在を知らなかったので、1時間くらいどうしてちゃんと動かないのか分からなかった。
キャメルケースって単語もそのとき初めて知りました。
まさかアンダーバー一つのために1時間もの時間を取られるとは全くの予想外だったさ。全角スペース並の強敵だったぜ。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。