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

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL