Sobes.tech
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