class Foo
{
public static $my_static = 'foo';
public static function staticValue() {
return self::$my_static;
}
}
$foo = new Foo();
print $foo->staticValue() . "\n";
print $foo->my_static . "\n";
为什么在使用PHP中的对象访问静态资源时无法访问静态属性。只能使用“::”访问。
答案 0 :(得分:1)
因为你有两个“范围”,一个是“对象”,一个是每个类中的“静态”。 因此,您希望在静态方法中执行常规方法时出现同样的问题。 例如:
class foo {
public function bar() {
echo "bar";
}
public static function bar2() {
echo $this->bar();
}
}
$foo = new foo();
$foo->bar2();
这是因为您处于静态上下文中,并且无法从该处访问对象上下文。 我想,更多的是不能说这个。 看到它就像你有一个住在其中的2个家庭的房子,它们之间的门永远不会打开。 你有一个全局的房子,它是一个类,然后是一个家庭1,它是对象范围,最后是家庭2,它是静态范围。
也许这有帮助。
答案 1 :(得分:0)
您需要使用范围解析运算符::
来访问它echo $foo::my_static . "\n";