php中对属性或方法的访问控制的介绍(代码示例)
来源:转载
发布时间:2018-10-26 17:06:58
阅读量:868
本篇文章给大家带来的内容是关于php中对属性或方法的访问控制的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
PHP中对属性或方法的访问控制,是通过在前面添加关键字public(公有)、protected(受保护)或 private(私有)来实现的。被定义为public的类成员可以在任何地方被访问,被定义为protected的类成员则可以被其自身以及其子类和父类访问。被定义为private的类成员则只能被其定义所在的类访问。
类属性必须定义为public、protected或private。如果用var定义,则被视为public。子类可以修改基类public和protected的属性的值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php
class A{
var $a = "a" ;
protected $b = "b" ;
private $c = "c" ;
function printVar(){
echo $this ->a. ";" . $this ->b. ";" . $this ->c. ";" . "\n" ;
}
}
class B extends A{
public $a = "aa" ;
protected $b = "bb" ;
private $c = "cc" ;
}
$a = new A();
$a ->printVar();
$b = new B();
$b ->printVar();
?>
|
类的必须定义为public、protected或private。如果未指定则视为public。子类可以覆盖基类public和protected的函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php
class A{
public function fa(){
echo "A->fa\n" ;
}
protected function fb(){
echo "A->fb\n" ;
}
private function fc(){
echo "A->fc\n" ;
}
function showFoo(){
$this ->fa();
$this ->fb();
$this ->fc();
}
}
class B extends A{
function fa(){
echo "B->fa\n" ;
}
protected function fb(){
echo "B->fb\n" ;
}
private function fc(){
echo "B->fc\n" ;
}
}
$a = new A();
$a ->showFoo();
$b = new B();
$b ->showFoo();
?>
|
同一个类的对象,即使不是同一个实例也可以互相访问对方的私有与受保护成员,因为这些对象的内部具体实现的细节都是已知的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php
class A
{
private $a ;
public function __construct( $a )
{
$this ->a = $a ;
}
private function fa()
{
echo 'private method fa.' ;
}
public function foo(A $other , $v )
{
$other ->a = $v ;
var_dump( $other ->a);
$other ->fa();
}
}
$a = new A( 'a' );
$aa = new A( 'aa' );
$a ->foo( $aa , 'newA' );
?>
|