24

这是参考获取实例的静态属性,我是新手并且有以下代码:

class Foo
{
   public static $my_static = 1;
}

class Bar extends Foo
{

}

$foo = new Foo();
$boo = new Bar();

echo Foo::$my_static;  // ok
echo Bar::$my_static;  // ok
echo $foo::$my_static; // ok
echo $boo::$my_static; // ok

静态变量/属性只能作为C++ 中的ClassName::static_property访问,但在 PHP 中并非如此……但 PHP 书籍大多提到className::static_property模式,而不是object::static_property构造。需要更多的光。

4

3 回答 3

23

可以通过多种方式访问​​静态属性。

Class::$aStaticProp; //by class name

$classname::$aStaticProp; // As of PHP 5.3.0 by object instance

不能使用箭头运算符通过对象访问静态属性->

从 PHP 5.3.0 开始,可以使用变量来引用类。变量的值不能是关键字(例如 self、parent 和 static)。

您可以在手册中阅读更多内容

于 2013-06-14T11:56:52.773 回答
11

$instance::$staticProperty只是 . 的便捷简写Class::$staticProperty。由于您已经有一个的实例并且语法是明确的,PHP 使您免于编写可能很长的类名。没有功能上的区别。

于 2013-06-14T11:55:18.297 回答
1

如果访问变量的函数也是静态的,则必须在类中使用 self::$staticPropery 。

于 2015-08-23T23:55:35.223 回答