ConFoo 2025

ReflectionClass::getStaticPropertyValue

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

ReflectionClass::getStaticPropertyValueObtém o valor da propriedade estática

Descrição

public ReflectionClass::getStaticPropertyValue(string $name, mixed &$def_value = ?): mixed

Obtém o valor de uma propriedade estática nesta classe.

Parâmetros

name

O nome da propriedade estática para a qual retornar um valor.

def_value

Um valor padrão a ser retornado caso a classe não declare um valor estático propriedade com o name fornecido. Se a propriedade não existe e este argumento é omitido, uma ReflectionException é lançada.

Valor Retornado

O valor da propriedade estática.

Exemplos

Exemplo #1 Exemplo básico de ReflectionClass::getStaticPropertyValue()

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

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

O exemplo acima produzirá:

string(3) "Red"

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
7
Antares
13 years ago
It seems this method has a security level different from the getStaticProperties method.

If you make two classes A and B looking like

<?php
class A{
protected static
$static_var='foo';

public function
getStatic(){
$class=new ReflectionClass($this);
return
$class->getStaticPropertyValue('static_var');
}

public function
getStatic2(){
$class=new ReflectionClass($this);
$staticProps=$class->getStaticProperties();
return
$staticProps['static_var'];
}

public function
__construct(){
echo
$this->getStatic2();
echo
$this->getStatic();
}
}

class
B extends A{
protected static
$static_var='foo2';

}
?>

Then the output will be an exception for the getStatic() call, when the getStatic2() will correctly return 'foo2';
up
-2
Mauro Gabriel Titimoli
14 years ago
If you want to change a static property of a variable class...

PHP 5.2
<?php
$reflection
= new ReflectionClass($className);
$staticPropertyReference = & $reflection->getStaticPropertyValue($staticPropertyName);

$staticPropertyReference = 'new value';
?>

PHP 5.3
<?php
$className
::$$classProperty
?>
To Top