Home > Article > Backend Development > Detailed examples of the differences between PHP's three access control modes
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
<?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(); ?>
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!