在类的静态方法中可以通过(本身的)实例访问其私有非静态属性


如何:

   
  <?php
  
class example
{
private $a = NULL;

public static function method()
{
$obj = new self;

$obj->a = "abc"; var_dump($obj);//在这里可以通过->访问$a属性?

return $obj;
}
}
$test = example::method();
var_dump($test);
?>

两处var_dump()打印结果都为:
object(example)[1]
private 'a' => string 'abc' (length=3)

问题注释,这样访问不报错,且正常执行!
通常说私有属性不能通过实例访问到,在此难道$obj依然属于内部?

面向对象 php

亚坦尼斯大主教 11 years, 10 months ago

@面向对象的访问控制为什么要基于Class而不是基于Object

简单的说, 因为在同一个class定义内, 所以可以访问.

甘蔗瑩FINO answered 11 years, 10 months ago

Your Answer