>  기사  >  백엔드 개발  >  PHP의 세 가지 액세스 제어 모드 간의 차이점에 대한 자세한 예

PHP의 세 가지 액세스 제어 모드 간의 차이점에 대한 자세한 예

伊谢尔伦
伊谢尔伦원래의
2017-07-03 10:04:391509검색

public: Public 유형

하위 클래스에서는 self::var, parent::method를 통해 public 메서드 또는 property를 호출하여 상위 클래스 메서드를 호출할 수 있습니다

  인스턴스에서는 $obj를 통해 public을 호출할 수 있습니다. ->var 유형 메서드 또는 속성

protected: 보호된 유형

하위 클래스에서 보호된 메서드 또는 속성은 self::var를 통해 호출할 수 있으며 parent::method는 상위 클래스 메서드를 호출합니다.

인스턴스에서는 $obj- >는 사용할 수 없습니다. var는 보호 유형 메서드 또는 속성을 호출하는 데

private: 개인 유형

이 유형의 속성 또는 메서드는 이 클래스, 이 클래스의 인스턴스, 하위 클래스 및 하위 클래스의 인스턴스에서만 사용할 수 있습니다. 개인 유형의 속성과 메서드는 호출할 수 없습니다

2. self와 parent의 차이점
a) 이 두 개체는 하위 클래스에서 일반적으로 사용됩니다. 주요 차이점은 self가 상위 클래스에서 공개 또는 보호 속성을 호출할 수 있지만 부모는

b).self:: 현재 클래스의

static 멤버(메서드 및 속성)를 호출할 수 없다는 것입니다. ,$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으로 문의하세요.