使用PHP对象访问静态属性

使用PHP对象访问静态属性,php,static,Php,Static,这是关于,我是一个新手,有以下代码: 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 静

这是关于,我是一个新手,有以下代码:

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

静态变量/属性仅被访问为<强> CordNo::StasyIGLUTHORION/START>,如在C++中,但PHP中不是这样的…但是PHP书籍大多提到className::static_属性模式,而不是object::static_属性构造。需要更多的说明。

$instance::$staticProperty
只是
类::$staticProperty
的简写。因为您已经有了一个类的实例,并且语法是明确的,所以PHP可以避免编写可能很长的类名。没有功能上的区别。

可以通过各种方式访问静态属性

Class::$aStaticProp; //by class name

$classname::$aStaticProp; // As of PHP 5.3.0 by object instance
无法使用箭头操作符
->
通过对象访问静态属性

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


您可以在类中阅读更多内容,如self:$staticPropery
如果访问变量的函数也是静态的。

此外,您可以在类内部使用
self:$my\u static
static::$my\u static
(参见
static::
用法(自PHP 5.3起)检查此链接可能会有所帮助…我确实有一个后续烦恼,因为我有点不相信这是有效的:
$instance::$staticProperty
对我来说没有意义。静态属性属于类,而不是对象。为什么解释器为了“方便”而允许滑动此属性?有时,当您在字符串中保留类名时您正在对它们进行动态操作,这非常有用。@Robert我想这对我来说应该是有意义的,因为PHP不是最严格的语言,但是您可以简单地使用
get_class()
来获取对象的类名。@BLaZuRE
$foo::$bar
→ “获取类的静态属性
$bar
$foo
是的一个实例。”这只是语法上的甜点,对我来说非常方便。:-3