この記事は、PHP オブジェクト指向の public private protected アクセス修飾子についての詳細な分析と紹介です。必要な方は参照してください。
PHP には 3 つのアクセス修飾子があります。すなわち、
public (パブリック、デフォルト)
保護されました
プライベート
public (public、default) PHP5 では、クラスでメンバーのアクセス修飾子が指定されていない場合、デフォルトは public アクセスです。
protected (protected) protected として宣言されたメンバーには、そのクラスのサブクラスによるアクセスのみが許可されます。
プライベート (プライベート) プライベートとして定義されたメンバーは、クラス内のすべてのメンバーに表示され、アクセス制限はありません。クラス外からのアクセスは禁止です。
イラスト
デモ
クラスの女性{
public $name = "ガオジン";
protected $age = "22";
プライベート $height = "170";
関数情報(){
echo $this->name;
}
プライベート関数say(){
echo "これはプライベートメソッドです";
}
}
//$w = 新しい女性();
//エコー $w->info();
//echo $w->name;//パブリックプロパティにアクセスできます
//echo $w->age;// 保護された属性、致命的なエラーが報告されました
//echo $w->height;// 保護された属性、致命的なエラーが報告されました
//プライベートメソッド、アクセスエラー
//$w->say() // プライベートメソッド、アクセスエラー
;
クラスの女の子は女性を拡張します{
// 親クラスのパブリック メソッドとプロテクト メソッドは再定義できますが、プライベート メソッドは定義できません
//protected $name = "jingao" // 再定義可能
;
関数情報(){
echo $this->name;
echo $this->age;
echo $this->height;
}
関数say(){
//parent::say();//プライベート メソッドは継承できません。親クラスの Say メソッドが保護されている場合、ここではエラーは報告されません
エコー「私は女の子です」;
}
}
$g = 新しい女の子();
$g->say();//通常の出力
//echo $g->height;//プライベートプロパティにアクセスできないため、結果は出力されません
//$g->info();//これは出力です gaojin22 $height はプライベートプロパティであり、継承されません
//$g->height = "12";//これは再定義され、値が割り当てられた高さ属性です
//$g->info();//したがって、ここでの出力は gaojin2212 になります