下面是从static
关键字PHP.net的文档:为什么静态属性不能通过“ - >”访问,但可以通过“::”访问?
声明为静态属性不能与实例化的类对象(尽管一个静态方法可以)进行访问。
那么,为什么下面的代码工作?
这里是他们的示例代码(我已经缩短):
<?php
class Foo
{
public static $my_static = 'foo';
}
$foo= new Foo();
print $foo::$my_static; //print 'foo'
?>
为什么$foo::$my_static still
的作品吗?谢谢大家!
你有'error_reporting()'打开了吗?你有没有收到任何警告或通知?该网页确实注意到以下几点:'小心: 在PHP 5中,调用非静态方法会静态生成E_STRICT级别警告。这可能是相关的。你使用什么PHP版本? –
没有这个例子是从PHP手册字面上。我只是缩短了一点点。当然没有警告或通知。我使用5.5 –
尝试使用$ foo-> my_static或者在使用$ this-> my_static的foo类中创建一个函数,您将看到警告。你不能在实例化的类对象中使用它。 – kainaw