PHP 8.4.0 RC4 available for testing

The ReflectionObject class

(PHP 5, PHP 7, PHP 8)

Introduzione

The ReflectionObject class reports information about an object.

Sommario della classe

class ReflectionObject extends ReflectionClass {
/* Costanti ereditate */
/* Proprietà ereditate */
public string $name;
/* Metodi */
public __construct(object $object)
/* Metodi ereditati */
public static ReflectionClass::export(mixed $argument, bool $return = false): string
public ReflectionClass::getAttributes(?string $name = null, int $flags = 0): array
}

Log delle modifiche

Versione Descrizione
8.0.0 ReflectionObject::export() was removed.

Indice dei contenuti

add a note

User Contributed Notes 2 notes

up
6
marcel dot nolte at noltecomputer dot de
15 years ago
To simply enlist all methods and properties of an object simply write:

<?php ReflectionObject::export($yourObject); ?>

,which will cause an var_export-like output.
up
3
ccb_bc at hotmail dot com
5 years ago
<?php
class FullReflectionObject {

/**
* @var obj => $ReflectionObject = propriedade que representa o objeto $ReflectionObject
* @var obj => $ReflectionProperty = propriedade que representa o objeto $ReflectionProperty
* @var obj => $ReflectionMethod = propriedade que representa o objeto $ReflectionMethod
* @var obj => $ReflectionParameter = propriedade que representa o objeto $ReflectionParameter
* @var bol => $reflect_object = true se o método object() for invocado
* @var bol => $reflect_property = true se o método property() for invocado
* @var bol => $reflect_method = true se o método method() for invocado
* @var bol => $reflect_parameter = true se o método parameter() for invocado
*/

private $ReflectionObject;
private
$ReflectionProperty;
private
$ReflectionMethod;
private
$ReflectionParameter;
private
$reflect_object = false;
private
$reflect_property = false;
private
$reflect_method = false;
private
$reflect_parameter = false;

/**
* @param obj => $object = objeto a ser refletido
*/
public function object(object $object) : object {
$this->reflect_object = true;
$this->ReflectionObject = new \ReflectionObject($object);
return
$this;
}

/**
* @param str => $class_name = nome da classe o qual a properiedade ser refletida pertence
* @param str => $property = nome da properiedade a ser refletida
*/
public function property(string $class_name, string $property) : object {
$this->reflect_property = true;
$this->ReflectionProperty = new \ReflectionProperty($class_name, $property);
return
$this;
}

/**
* @param str => $class_name = nome da classe o qual o método ser refletido pertence
* @param str => $method = nome do método a ser refletido
*/
public function method(string $class_name, string $method) : object {
$this->reflect_method = true;
$this->ReflectionMethod = new \ReflectionMethod($class_name, $method);
return
$this;
}

/**
* @param str => $class_name = nome da classe o qual o parametro a ser refletido pertence
* @param str => $method = nome do método o qual o parametro a ser refletido pertence
* @param str => $parameter = nome do parametro a ser refletido
*/
public function parameter(string $class_name, string $method, string $parameter) : object {
$this->reflect_parameter = true;
$this->ReflectionParameter = new \ReflectionParameter(array($class_name, $method), $parameter);
return
$this;
}

public function
__call($methodName, $args){
if(
$this->reflect_object){
return
call_user_func_array(array($this->ReflectionObject, $methodName), $args);
}
if(
$this->reflect_property){
return
call_user_func_array(array($this->ReflectionProperty, $methodName), $args);
}
if(
$this->reflect_method){
return
call_user_func_array(array($this->ReflectionMethod, $methodName), $args);
}
if(
$this->reflect_parameter){
return
call_user_func_array(array($this->ReflectionParameter, $methodName), $args);
}
}
}

// Digamos que você tenha no seu projeto a classe Client do pacote Guzzle
$FullReflectionObject = new FullReflectionObject;
var_dump($FullReflectionObject->object(new GuzzleHttp\Client)->getMethods());
var_dump($FullReflectionObject->property('GuzzleHttp\Client', 'config')->isPrivate());
var_dump($FullReflectionObject->method('GuzzleHttp\Client', 'buildUri')->isPrivate());
var_dump($FullReflectionObject->parameter('GuzzleHttp\Client', 'send', 'options')->getDefaultValue());
To Top