CakePHP1.3 controller中のprivate表記って微妙じゃね?と思う件
忘備録
controller中のメソッドは通常publicだけど、外から呼ばれたくない(アクセスされたくない)場合以下のようにする。
//外部からは呼ばれない(http://〜/fugaのアクセスは全て拒否) function __fuga(){ echo "俺は呼ばれない!"; } //外部から呼ばれる(http://〜/hogeでアクセス可能) function hoge(){ //アクション中で呼び出すことは可能 $this->__fuga(); }
_(アンダーバー)1個でprotected、__2個でprivateとなるが、コントローラでprotectedって使わんでしょ、ということでprivateだけ憶えておけばよさそう。
CakePHPのフレームワーク自体もこのアンダーバー表記が多用されていました。
下記の通り、アンダーバーを使わずに書いてもOK
//外部からは呼ばれない(http://〜/fugaのアクセスは全て拒否) private function fuga(){ echo "俺は呼ばれない!"; } //外部から呼ばれる(http://〜/hogeでアクセス可能) function hoge(){ //アクション中で呼び出すことは可能 $this->fuga(); }
で、ここからが疑問
メソッドがアンダーバー表記で可視性を定義できるなら、変数も当然できるよねと思いきやこれは出来ない。
//OK private $hoge; //コンパイルエラー //__$hoge;
なら全部privateとかprotectedとか書いたほうが分かりやすくね?
あるいは全部アンダーバー表記の方法を実装してほしいと思うんだけど。
なんだかなぁ。
参考にしたサイト
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=thread&topic_id=705&forum=8