CakePHPで最近知ったのですが、ビューに値を渡す時にSetメソッドの引数にcompact関数を使用しているのをときどき目にします。何じゃろな?と思ったのでちょっと調べて、下記に明記しておきます。既知の方は知らなかった自分が恥ずかしいのでスルー願いますm(__)m

 CakePHPのコントローラーメソッドにSetメソッドがあります。公式は以下の通り。

set(string $var, mixed $value)

私の今まで使い方は第1引数にビューで設定されている変数名を設定し、第2引数にその変数へ与える値をセットします。例えばビューの$userName変数にコントローラーで使用している$nameを与える場合は

$this->set("userName", $name);

となります。

 さて、今回、私が知った方法というのは下記のような書き方です。

$this->set(compact("name", "address", "tel"));

です。compact関数はPHPの関数でドキュメントマニュアルを見ると

変数名とその値から配列を作成する

と書かれていて引数で書かれた文字列をキーとして同じ変数を配列で与えるというものです。詳細はマニュアルを参照ください。

 全然知らなかったのはSetメソッドの第1引数が配列にも対応しているという点です。これにより上記の方法だとビューの各変数$name、$address、$telにコントローラーの$name、$address、$telをまとめてセットすることができます。知らなかった私は毎回

$this->set("name", $name);
$this->set("address", $address);
$this->set("tel", $tel);

と書いていました。恥ずかしい(/ω\)。ちなみにCakePHPの「/cake/libs/controller/controller.php」で「function set」で検索してもらえばソースが確認できます。この様な方法が使える様になったのって1.2からできたのでしょうかね。

 自分のちょっと恥ずかしい話でした(;¬∀¬)ハハハ…。