1 php
我的代码:
class Test {
private $a = 5;
public function __set($name, $value)
{
// TODO: Implement __set() method.
echo $name . "#" .$value."<br>";
}
public static function do_test(){
$x= new Test();
$x->a=5;
}
}
$x=new Test();
$x->a=3;
Test::do_test();
Run Code Online (Sandbox Code Playgroud)
输出:
a#3
Run Code Online (Sandbox Code Playgroud)
函数static do_test()不会调用magic methods(__set).为什么?谢谢!
只有在属性不可访问时(包括它不存在)才会调用魔术方法.你的财产是private.Test::do_test可以访问该private属性,因为您从具有相同类的上下文访问它.它不必是相同的实例(即$this或self),它只需要是相同的类上下文.private即使类不是同一个实例,类也可以访问其属性.因此,访问不需要您的魔术方法.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |