日志

PHP类的访问控制

PHP的类属性、方法的可见性通过三个关键词来定义,即public、protected和private

  • 关键词

  1. public

    类成员(方法、属性)可以随处访问;
    以var声明的类属性会被定义为public性质;
    为了兼容PHP4,如果没有指定访问控制,属性和方法默认为公有的;

  2. protected

    类成员可以被自身、继承类和父类访问。(注意:类实例对象不可访问)

  3. 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();
转载请注明出处:

© http://hejunhao.me