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