エンジニア採用セミナー
エンジニア採用セミナー
2009.05.26

compactは変数名もコンパクトになる・・・のか?

まっちー

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時間もの時間を取られるとは全くの予想外だったさ。全角スペース並の強敵だったぜ。