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