ホームページ >バックエンド開発 >PHPチュートリアル >PHP の 3 つのアクセス制御モードの違いの詳細な例
public:パブリック型
サブクラスでは、self::var,parent::methodを介してpublicメソッドまたはpropertyを呼び出して親クラスのメソッドを呼び出すことができます
インスタンスでは、$objを介してpublicを呼び出すことができます->var 型メソッドまたは属性
protected: 保護された型
サブクラスでは、保護されたメソッドまたは属性は self::var を通じて呼び出すことができ、parent::method は親クラスのメソッドを呼び出します
インスタンスでは、$obj- > ;var を使用して保護された型のメソッドまたはプロパティを呼び出すことはできません
private: private 型
この型のプロパティまたはメソッドは、このクラス、このクラスのインスタンス、サブクラス、およびサブクラスのインスタンスでのみ使用できますプライベート型のプロパティとメソッドは呼び出すことができません
2. selfとparentの違い
a) これらの2つのオブジェクトはサブクラスでよく使用されます。主な違いは、self は親クラスの public または protected プロパティを呼び出すことができますが、parent は
static メンバー (メソッドとプロパティ) を表します。 $this とは異なります。 ,$this は現在のオブジェクトを参照します
コードは次のとおりです:<?php /** * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性 * self 可以调用父类中除私有类型的方法和属性外的所有数据 */ class User{ public $name; private $passwd; protected $email; public function construct(){ //print CLASS." "; $this->name= 'simple'; $this->passwd='123456'; $this->email = 'bjbs_270@163.com'; } public function show(){ print "good "; } public function inUserClassPublic() { print CLASS.'::'.FUNCTION." "; } protected function inUserClassProtected(){ print CLASS.'::'.FUNCTION." "; } private function inUserClassPrivate(){ print CLASS.'::'.FUNCTION." "; } } class simpleUser extends User { public function construct(){ //print CLASS." "; parent::construct(); } public function show(){ print $this->name."//public "; print $this->passwd."//private "; print $this->email."//protected "; } public function inSimpleUserClassPublic() { print CLASS.'::'.FUNCTION." "; } protected function inSimpleUserClassProtected(){ print CLASS.'::'.FUNCTION." "; } private function inSimpleUserClassPrivate() { print CLASS.'::'.FUNCTION." "; } } class adminUser extends simpleUser { protected $admin_user; public function construct(){ //print CLASS." "; parent::construct(); } public function inAdminUserClassPublic(){ print CLASS.'::'.FUNCTION." "; } protected function inAdminUserClassProtected(){ print CLASS.'::'.FUNCTION." "; } private function inAdminUserClassPrivate(){ print CLASS.'::'.FUNCTION." "; } } class administrator extends adminUser { public function construct(){ parent::construct(); } } /** * 在类的实例中 只有公有属性和方法才可以通过实例化来调用 */ $s = new administrator(); print '-------------------'; $s->show(); ?>
以上がPHP の 3 つのアクセス制御モードの違いの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。