从PHP类获取静态

时间:2015-01-30 10:52:07

标签: php

有没有办法从类中获取静态属性而无需创建类的实例?

$reflection   = new ReflectionObject( 'Foo' );
$staticProperties = $reflection->getStaticProperties(); 

这样做会引发错误。

ReflectionObject::__construct() expects parameter 1 to be object, string given in test.php on line 19

这是php 5.5 文档似乎表明我应该能够传递一个字符串..

http://php.net/manual/en/reflectionclass.construct.php

Either a string containing the name of the class to reflect, or an object.

有什么想法吗?想要获得它们而无需令牌解析文件。

4 个答案:

答案 0 :(得分:3)

就像@PeeHaa指出的那样,ReflectionObject不是ReflectionClass

新代码:

$reflection   = new ReflectionClass( 'Foo' );
$staticProperties = $reflection->getStaticProperties(); 

答案 1 :(得分:0)

ReflectionObject提供有关对象实例的信息。您在问题中寻找和链接的是ReflectionClass。

答案 2 :(得分:0)

此链接直接来自php参考: http://php.net/manual/en/reflectionclass.getstaticpropertyvalue.php

<?php
class Apple {
     public static $color = 'Red';
}

$class = new ReflectionClass('Apple');
var_dump($class->getStaticPropertyValue('color'));
?>

所以在这里你可以看到你需要一个类和静态属性的名称(请求的字符串)

答案 3 :(得分:0)

尝试:

ClassName::propertyName

这是:

ReflectionObject::getStaticProperties()