Класс ReflectionObject
(PHP 5)
Введение
Класс ReflectionObject сообщает информацию об объектах (object).
Обзор классов
/* Константы */
/* Свойства */
/* Методы */
/* Наследуемые методы */
ReflectionClass::__construct
( mixed
}$argument
)Свойства
- name
-
Имя класса объекта. Доступно только для чтения и выбрасывает исключение ReflectionException при попытке записи.
Содержание
- ReflectionObject::__construct — Конструктор класса ReflectionObject
- ReflectionObject::export — Экспорт
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения, относящиеся к переменным и типам
- Введение
- Установка и настройка
- Предопределенные константы
- Примеры
- Расширение
- Класс Reflection
- Класс ReflectionClass
- Класс ReflectionZendExtension
- Класс ReflectionExtension
- Класс ReflectionFunction
- Класс ReflectionFunctionAbstract
- Класс ReflectionMethod
- Класс ReflectionObject
- Класс ReflectionParameter
- Класс ReflectionProperty
- ReflectionType
- ReflectionGenerator
- Интерфейс Reflector
- Класс ReflectionException
Коментарии
To simply enlist all methods and properties of an object simply write:
<?php ReflectionObject::export($yourObject); ?>
,which will cause an var_export-like output.
<?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());