note 123865 added to class.reflectionobject

From: Date: Tue, 21 May 2019 03:39:33 +0000
Subject: note 123865 added to class.reflectionobject
Groups: php.notes 
Request: Send a blank email to php-notes+get-211092@lists.php.net to get a copy of this message
<?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()); ---- Server IP: 208.43.231.9 Probable Submitter: 82.199.157.34 (proxied: 2804:d57:2e8a:8200:dd38:729d:2e4a:d66b) ---- Manual Page -- http://php.net/manual/en/class.reflectionobject.php Edit -- https://master.php.net/note/edit/123865 Del: integrated -- https://master.php.net/note/delete/123865/integrated Del: useless -- https://master.php.net/note/delete/123865/useless Del: bad code -- https://master.php.net/note/delete/123865/bad+code Del: spam -- https://master.php.net/note/delete/123865/spam Del: non-english -- https://master.php.net/note/delete/123865/non-english Del: in docs -- https://master.php.net/note/delete/123865/in+docs Del: other reasons-- https://master.php.net/note/delete/123865 Reject -- https://master.php.net/note/reject/123865 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#211092) next »