PHP的类属性、方法的可见性通过三个关键词来定义,即public、protected和private
关键词
public
类成员(方法、属性)可以随处访问;
以var声明的类属性会被定义为public性质;
为了兼容PHP4,如果没有指定访问控制,属性和方法默认为公有的;protected
类成员可以被自身、继承类和父类访问。(注意:类实例对象不可访问)
private
类成员只允许自身访问
例子
PHP version: PHP5.5
<?php class obj{ public $obj_pub = 'obj_pub'; protected $obj_protected = 'obj_protected'; private $obj_private = 'obj_private'; public function print_data(){ echo $this->obj_private; echo $this->obj_protected; echo $this->obj_private; } protected function method_protected(){} private function method_private(){} } $o = new obj(); echo $o->obj_pub;//公有属性调用 echo $o->obj_protected; //报错,实例对象不可访问受保护的类属性 echo $o->obj_private; //报错,实例对象不可访问私有属性 echo $o->print_data();//调用公有方法 class animal extends obj{ public function print_1(){ echo $this->obj_pub;//调用父类公有属性 echo $this->obj_protected;//调用父类受保护的属性 } public function print_2(){ echo $this->obj_privatje;//报错,父类私有属性禁止子类访问 } public function foo(){ $this->print_data();//调用父类公有方法 $this->method_protected();//调用父类受保护的方法 $this->method_private();//报错,父类私有方法禁止子类访问 } } $a = new animal(); $a->print_1(); $a->print_2(); $a->foo();