ホームページ  >  記事  >  バックエンド開発  >  PHP の 3 つのアクセス制御モードの違いの詳細な例

PHP の 3 つのアクセス制御モードの違いの詳細な例

伊谢尔伦
伊谢尔伦オリジナル
2017-07-03 10:04:391444ブラウズ

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 は

を呼び出すことができないことです。 b).self:: 現在のクラスの

static メンバー (メソッドとプロパティ) を表します。 $this とは異なります。 ,$this は現在のオブジェクトを参照します

コードは次のとおりです:

<?php
/**
 * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性
 * self  可以调用父类中除私有类型的方法和属性外的所有数据
 */
class User{
    public $name;
    private $passwd;
    protected $email;    
    public  function construct(){
        //print CLASS." ";
        $this->name= &#39;simple&#39;;
        $this->passwd=&#39;123456&#39;;
        $this->email = &#39;bjbs_270@163.com&#39;;
    }    
    public function show(){
        print "good ";
    }    
    public function inUserClassPublic() {
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }    
    protected  function inUserClassProtected(){
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }    
    private function inUserClassPrivate(){
        print CLASS.&#39;::&#39;.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.&#39;::&#39;.FUNCTION." ";
    }
    
    protected function inSimpleUserClassProtected(){
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }
    
    private function inSimpleUserClassPrivate() {
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }
}

class adminUser extends simpleUser {
    protected $admin_user;
    public function construct(){
        //print CLASS." ";
        parent::construct();
    }
    
    public function inAdminUserClassPublic(){
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }
    
    protected function inAdminUserClassProtected(){
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }
    
    private function inAdminUserClassPrivate(){
        print CLASS.&#39;::&#39;.FUNCTION." ";
    }
}

class administrator extends adminUser {
    public function construct(){        
        parent::construct();
    }
}

/**
 * 在类的实例中 只有公有属性和方法才可以通过实例化来调用
 */
$s = new administrator();
print &#39;-------------------&#39;;
$s->show();
?>

以上がPHP の 3 つのアクセス制御モードの違いの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。