Home  >  Article  >  Backend Development  >  Detailed examples of the differences between PHP's three access control modes

Detailed examples of the differences between PHP's three access control modes

伊谢尔伦
伊谢尔伦Original
2017-07-03 10:04:391498browse

public: Public type

In a subclass, you can call the public method or attribute, parent::method through self::var to call the parent class method

In the instance, you can call the method or property of the public type through $obj->var

protected: Protected type

In the subclass, you can call it through self::var protected method or attribute, parent::method calls the parent class method

In the instance, you cannot call the method or attribute of the protected type through $obj->var

private: private type

The properties or methods of this type can only be used in this class. The properties and methods of private types cannot be called in instances of this class, subclasses, or instances of subclasses

2. The difference between self and parent
a). These two objects are commonly used in subclasses. Their main difference is that self can call public or protected properties in the parent class, but parent cannot call

b).self:: It represents the

static members of the current class ( Methods and properties) Unlike $this, $this refers to the current object

The code is as follows:

<?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();
?>

The above is the detailed content of Detailed examples of the differences between PHP's three access control modes. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn