Cakephp2.0はPHP4系を捨てたっぽいので、メンバ変数がvarからpublicとかに変わってます。
4系の頃はメンバ変数と言ったらvarの一つしかなかった……んだっけ? 確かそうだったと思うんだけど、PHP5になってからは3つくらいに増えました。
じゃあその違いは何かと言うと、どこから参照できるかという違いがあります。
こんな説明で良いのかしら。
publicはvarのときと挙動は一緒です。protectedは、親クラスなどでは使うことができるんですが、新たにオブジェクトを生成して呼び出そうとした場合はエラーになります。privateは親クラスであっても呼び出すことはできないです。
こんな感じですね。状況に応じて使い分けるのが良いですね。
でも面倒な場合はとりあえず全部publicにしちゃう?
4系の頃はメンバ変数と言ったらvarの一つしかなかった……んだっけ? 確かそうだったと思うんだけど、PHP5になってからは3つくらいに増えました。
じゃあその違いは何かと言うと、どこから参照できるかという違いがあります。
public・・・どこでも使える
protected・・・変数を定義しているクラスとそれを継承するクラスでしか使えない
private・・・自分のクラスでしか使えない
こんな説明で良いのかしら。
publicはvarのときと挙動は一緒です。protectedは、親クラスなどでは使うことができるんですが、新たにオブジェクトを生成して呼び出そうとした場合はエラーになります。privateは親クラスであっても呼び出すことはできないです。
class Sample {
public $sample_public = 'public';
protected $sample_protected = 'protected';
private $sample_private = 'private';
}
class SampleChild extends Sample {
function test() {
echo $this->sample_public; //"public"が出力される
echo $this->sapmle_protected; //"protected"が出力される
echo $this->sample_private; //エラーになる
}
}
//オブジェクトを生成する場合
$obj = new SampleChild();
echo $obj->sample_public; //"public"が出力される
echo $obj->sample_protected; //エラーになる
echo $obj->sample_private; //エラーになる
こんな感じですね。状況に応じて使い分けるのが良いですね。
でも面倒な場合はとりあえず全部publicにしちゃう?