Middle
A PHP-ben mire való a reflexió?
sobes.tech MI
Válasz az MI-től
A PHP Reflection lehetővé teszi a kód szerkezetének vizsgálatát és módosítását futás közben. Ide tartozik az információk megszerzése osztályokról, objektumokról, módszerekről, tulajdonságokról, állandókról és névterekről.
Fő alkalmazások:
- Introspekció: Metaadatok szerzése a meglévő kódról (módszernév, argumentumok, hozzáférési módosítók).
- Dinamikus objektumok létrehozása és módszerek hívása: Osztálypéldányok készítése és azok módszereinek hívása sztring név alapján.
- Frameworkök és könyvtárak fejlesztése: Rugalmas rendszerek létrehozása, amelyek képesek elemezni és interakcióba lépni a felhasználói kóddal (pl. IoC konténerek, ORM).
- Hibaelhárítás és tesztelés: Eszközök a kód elemzéséhez futás közben.
- Automatikus dokumentáció generálás.
Példa osztályinformációk lekérésére a ReflectionClass segítségével:
<?php
// stdClass osztályról információk lekérése
$reflectionClass = new ReflectionClass('stdClass');
echo $reflectionClass->getName(); // Kiírja: stdClass
$methods = $reflectionClass->getMethods();
foreach ($methods as $method) {
echo $method->getName() . "\n"; // Kiírja a metódusneveket (ha vannak)
}
Dinamikus metódushívás példája:
<?php
class MyClass {
public function myMethod($arg) {
return "Szia, " . $arg;
}
}
$className = 'MyClass';
$methodName = 'myMethod';
$argument = 'világ';
$reflectionMethod = new ReflectionMethod($className, $methodName);
$object = new $className();
$result = $reflectionMethod->invoke($object, $argument);
echo $result; // Kiírja: Szia, világ