首頁  >  文章  >  後端開發  >  php的三種存取控制模式的區別實例詳解

php的三種存取控制模式的區別實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-03 10:04:391505瀏覽

public: 公有型別

        在子類別中可以透過self::var呼叫public方法或屬性,parent::method呼叫父類別方法

    在實例中可以能過$obj->var 來呼叫public類型的方法或屬性

protected: 受保護類型

##        在子類別中呼叫protected方法或屬性,parent::method呼叫父類別方法

        在實例中不能透過$obj->var 來呼叫  protected類型的方法或屬性

private:#N私有私有製類型

# 該類型的屬性或方法只能在該類別中使用,在該類別的實例、子類別中、子類別的實例中都不能呼叫私有類型的屬性和方法


2.self 和parent 的區別
  a).子類別中常用到這兩個物件。他們的主要差異在於self可以呼叫父類別中的公有或受保護的屬性,但parent不可以呼叫

  b).self:: 它表示目前類別的靜態成員(方法與屬性) 與$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的三種存取控制模式的區別實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn