Note that the public member $class contains the name of the class in which the method has been defined:
<?php
class A {public function __construct() {}}
class B extends A {}
$method = new ReflectionMethod('B', '__construct');
echo $method->class; // prints 'A'
?>ReflectionMethod
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ReflectionMethod
Референца за `class.reflectionmethod.php` со подобрена типографија и навигација.
Класата ReflectionMethod
класата mysqli_driver
Вовед
На ReflectionMethod класата известува информации за метод.
Синопсис на класата
public setAccessible(bool
$accessible): voidСвојства
- name
-
Име на метод
- class
-
Име на класа
Претходно дефинирани константи
Модификатори на ReflectionMethod
-
ReflectionMethod::IS_STATICint -
Индицира дека методот е статичен. Пред PHP 7.4.0, вредноста беше
1. -
ReflectionMethod::IS_PUBLICint -
Индицира дека методот е јавен. Пред PHP 7.4.0, вредноста беше
256. -
ReflectionMethod::IS_PROTECTEDint -
Индицира дека методот е заштитен. Пред PHP 7.4.0, вредноста беше
512. -
ReflectionMethod::IS_PRIVATEint -
Индицира дека методот е приватен. Пред PHP 7.4.0, вредноста беше
1024. -
ReflectionMethod::IS_ABSTRACTint -
Индицира дека методот е апстрактен. Пред PHP 7.4.0, вредноста беше
2. -
ReflectionMethod::IS_FINALint -
Индицира дека методот е финален. Пред PHP 7.4.0, вредноста беше
4.
Забелешка:
Вредностите на овие константи може да се променат помеѓу верзиите на PHP. Се препорачува секогаш да ги користите константите и да не се потпирате директно на вредностите.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.4.0 | Константите на класата сега се типизирани. |
| 8.0.0 | ReflectionMethod::export() Враќа ODBC резултат објект ако SQL командата беше успешно извршена, или |
Содржина
- ReflectionMethod::__construct — Го враќа текстуалниот приказ на објектот ReflectionFunctionAbstract
- ReflectionMethod::createFromMethodName — Конструира ReflectionMethod
- ReflectionMethod::export — Создава нов ReflectionMethod
- ReflectionMethod::getClosure — Експортира метод за рефлексија
- ReflectionMethod::getDeclaringClass — Враќа динамички креирано затворање за методот
- ReflectionMethod::getModifiers — Го добива класата што го декларира методот
- ReflectionMethod::getPrototype — Ги добива модификаторите на методот
- ReflectionMethod::hasPrototype — Враќа дали методот има прототип
- ReflectionMethod::invoke — Повикај
- ReflectionMethod::invokeArgs — Повикај аргументи
- ReflectionMethod::isAbstract — Проверува дали методот е апстрактен
- ReflectionMethod::isConstructor — Проверува дали методот е конструктор
- ReflectionMethod::isDestructor — Проверува дали методот е деструктор
- ReflectionMethod::isFinal — Проверува дали методот е финален
- ReflectionMethod::isPrivate — Проверува дали методот е приватен
- ReflectionMethod::isProtected — Проверува дали методот е заштитен
- ReflectionMethod::isPublic — Проверува дали методот е јавен
- ReflectionMethod::setAccessible — Постави пристапност на методот
- ReflectionMethod::__toString — Враќа текстуална репрезентација на објектот Reflection method
Белешки од корисници 2 забелешки
We can make a "Automatic dependenci injector" in classes when her constructors depends other classes (with type hint).
<?php
class Dependence1 {
function foo() {
echo "foo";
}
}
class Dependence2 {
function foo2() {
echo "foo2";
}
}
final class myClass
{
private $dep1;
private $dep2;
public function __construct(
Dependence1 $dependence1,
Dependence2 $dependence2
)
{
$this->dep1 = $dependence1;
$this->dep2 = $dependence2;
}
}
// Automatic dependence injection (CLASSES)
$constructor = new ReflectionMethod(myClass::class, '__construct');
$parameters = $constructor->getParameters();
$dependences = [];
foreach ($parameters as $parameter) {
$dependenceClass = (string) $parameter->getType();
$dependences[] = new $dependenceClass();
}
$instance = new myClass(...$dependences);
var_dump($instance);
?>
Results in:
object(myClass)#6 (2) {
["dep1":"myClass":private]=>
object(Dependence1)#4 (0) {
}
["dep2":"myClass":private]=>
object(Dependence2)#5 (0) {
}
}