¿Hay alguna forma de obtener las propiedades estáticas de una clase sin tener que crear una instancia de la clase?

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

Hacer eso arroja un error.

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

Esto es php 5.5. Los documentos parecen mostrar que debería poder pasar una cadena.

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

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

¿Alguna idea? Desea obtenerlos sin tener que analizar el archivo con un token.

php
-1
Wizzard 30 ene. 2015 a las 13:52

4 respuestas

La mejor respuesta

Como señaló @PeeHaa, no es ReflectionObject es ReflectionClass.

Nuevo código:

$reflection   = new ReflectionClass( 'Foo' );
$staticProperties = $reflection->getStaticProperties(); 
3
Abandoned Account 30 ene. 2015 a las 10:59

Este enlace se toma directamente de la referencia de 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'));
?>

Entonces aquí puede ver que necesita una clase y un nombre de la propiedad estática (la cadena que se solicita)

0
Blaatz0r 30 ene. 2015 a las 11:05

Tratar:

ClassName::propertyName

Aquí está:

ReflectionObject::getStaticProperties()
0
sachin 30 ene. 2015 a las 11:04

ReflectionObject proporciona información sobre una instancia de objeto. Lo que está buscando y vinculado en su pregunta es ReflectionClass.

0
Cem Kalyoncu 30 ene. 2015 a las 10:59