Note: If you want to invoke protected or private methods, you'll first have to make them accessible using the setAccessible() method (see http://php.net/reflectionmethod.setaccessible ).ReflectionMethod::invoke
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ReflectionMethod::invoke
Референца за `reflectionmethod.invoke.php` со подобрена типографија и навигација.
ReflectionMethod::invoke
класата mysqli_driver
ReflectionMethod::invoke — Повикај
= NULL
Повикува рефлектиран метод.
Параметри
object-
Објектот на кој ќе се повика методот. За статички методи, поминете null на овој параметар.
args-
Нула или повеќе параметри што ќе се предадат на методот. Прифаќа променлив број на параметри што се предаваат на методот.
Вратени вредности
Враќа резултат од методот.
Errors/Exceptions
А ReflectionException ако object
параметарот не содржи инстанца на класата во која е деклариран овој метод.
А ReflectionException ако повикувањето на методот не успеа.
Примери
Пример #1 Овозможува повикување на заштитен или приватен метод преку example
<?php
class HelloWorld {
public function sayHelloTo($name) {
return 'Hello ' . $name;
}
}
$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invoke(new HelloWorld(), 'Mike');
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Hello Mike
Белешки
Забелешка:
Овозможува повикување на заштитен или приватен метод преку не може да се користи кога се очекуваат референтни параметри. (PHP 5 >= 5.1.2, PHP 7, PHP 8) мора да се користи наместо тоа (предавање референци во списокот со аргументи).
Види Исто така
- (PHP 5 >= 5.1.2, PHP 7, PHP 8) - Повикај аргументи
- __invoke()
- call_user_func() - Повикајте ја повратната функција дадена од првиот параметар
Белешки од корисници 3 белешки
This method can be used to call a overwritten public method of a parent class on an child instance
The following code will output "A":
<?php
class A
{
public function foo()
{
return __CLASS__;
}
}
class B extends A
{
public function foo()
{
return __CLASS__;
}
}
$b = new B();
$reflection = new ReflectionObject($b);
$parentReflection = $reflection->getParentClass();
$parentFooReflection = $parentReflection->getMethod('foo');
$data = $parentFooReflection->invoke($b);
echo $data;
?>Seems that Reflection doesn`t resolve late static bindings - var_dump will show "string 'a' (length=1)".
<?php
class ParentClass { protected static $a = 'a'; static public function init() { return static::$a; } }
class ChildClass extends ParentClass { protected static $a = 'b'; }
$r = new ReflectionClass('ChildClass');
var_dump($r->getMethod('init')->invoke(null));
?>