Reflection Extend Library.
$ composer require wandu/reflection
It supports 6 types of callable object. (ref. Wani Blog, Callable)
- string of function's name.
- string of class and static method's name.
- array of class and static method's name.
- array of object and method's name.
- object of class that has
__invoke
method. (ref. Magic Method__invoke
) - object of
Closure
.
and two more.
__call
magic method.__callStatic
magic method.
namespace Wandu\Reflection;
use ReflectionFunctionAbstract;
use Reflector;
class ReflectionCallable extends ReflectionFunctionAbstract implements Reflector {
/* Method */
public __construct( callable $callee )
public mixed __invoke( ...$parameters )
public string getCallableName()
public boolean isMagicMethod()
public int getReflectionType()
public ReflectionFunctionAbstract getRawReflection()
/* Inherited methods */
final private void ReflectionFunctionAbstract::__clone ( void )
public ReflectionClass ReflectionFunctionAbstract::getClosureScopeClass ( void )
public object ReflectionFunctionAbstract::getClosureThis ( void )
public string ReflectionFunctionAbstract::getDocComment ( void )
public int ReflectionFunctionAbstract::getEndLine ( void )
public ReflectionExtension ReflectionFunctionAbstract::getExtension ( void )
public string ReflectionFunctionAbstract::getExtensionName ( void )
public string ReflectionFunctionAbstract::getFileName ( void )
public string ReflectionFunctionAbstract::getName ( void )
public string ReflectionFunctionAbstract::getNamespaceName ( void )
public int ReflectionFunctionAbstract::getNumberOfParameters ( void )
public int ReflectionFunctionAbstract::getNumberOfRequiredParameters ( void )
public array ReflectionFunctionAbstract::getParameters ( void )
public ReflectionType ReflectionFunctionAbstract::getReturnType ( void )
public string ReflectionFunctionAbstract::getShortName ( void )
public int ReflectionFunctionAbstract::getStartLine ( void )
public array ReflectionFunctionAbstract::getStaticVariables ( void )
public bool ReflectionFunctionAbstract::hasReturnType ( void )
public bool ReflectionFunctionAbstract::inNamespace ( void )
public bool ReflectionFunctionAbstract::isClosure ( void )
public bool ReflectionFunctionAbstract::isDeprecated ( void )
public bool ReflectionFunctionAbstract::isGenerator ( void )
public bool ReflectionFunctionAbstract::isInternal ( void )
public bool ReflectionFunctionAbstract::isUserDefined ( void )
public bool ReflectionFunctionAbstract::isVariadic ( void )
public bool ReflectionFunctionAbstract::returnsReference ( void )
abstract public void ReflectionFunctionAbstract::__toString ( void )
}
(ref. ReflectionFunctionAbstract Class)
use Wandu\Reflection\ReflectionCallable;
// 1. string of function's name.
$reflection = new ReflectionCallable('yourfunctionname'); // OK
$reflection = new ReflectionCallable('Your\OwnNamespace\yourfunctionname'); // with namespace also OK.
// 2. string of class and static method's name.
$reflection = new ReflectionCallable('Your\OwnNamespace\MyClass::callMyMethod'); // OK
// 3. array of class and static method's name.
$reflection = new ReflectionCallable(['Your\OwnNamespace\MyClass', 'callMyMethod']); // OK
// 4. array of object and method's name.
$reflection = new ReflectionCallable([new Your\OwnNamespace\MyClass(), 'callMyMethod']); // OK
// 5. object of class that has `__invoke` method.
$reflection = new ReflectionCallable(new Your\OwnNamespace\ClassWithInvoke()); // OK
// 6. object of `Closure`
$reflection = new ReflectionCallable(function ($param1, $param2) { /* do something */ });
$reflection->getNumberOfParameters(); // return 2
// 7. __call
$reflection = new ReflectionCallable([new Your\OwnNamespace\HasCallClass, 'anything']);
$reflection->getNumberOfParameters(); // always return 0
$reflection->getNumberOfRequiredParameters(); // always return 0
$reflection->getParameters(); // always return []
$reflection->getShortName(); // return 'anything'
$reflection->getName(); // return 'anything'
// 8. __callStatic
$reflection = new ReflectionCallable([Your\OwnNamespace\HasCallStaticClass::class, 'anything']);
$reflection->getNumberOfParameters(); // always return 0
$reflection->getNumberOfRequiredParameters(); // always return 0
$reflection->getParameters(); // always return []
$reflection->getShortName(); // return 'anything'
$reflection->getName(); // return 'anything'