在类的静态方法中可以通过(本身的)实例访问其私有非静态属性
如何:
<?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依然属于内部?
亚坦尼斯大主教
11 years, 10 months ago
Answers
@面向对象的访问控制为什么要基于Class而不是基于Object
简单的说, 因为在同一个class定义内, 所以可以访问.
甘蔗瑩FINO
answered 11 years, 10 months ago