Sobes.tech
Middle

Do czego służy refleksja w PHP?

sobes.tech AI

Odpowiedź od AI

Refleksja w PHP pozwala na badanie i modyfikację struktury kodu podczas jego wykonywania. Obejmuje to uzyskiwanie informacji o klasach, obiektach, metodach, właściwościach, stałych i przestrzeniach nazw.

Główne zastosowania:

  • Intrypspekcja: Uzyskiwanie metadanych o istniejącym kodzie (nazwy metod, argumenty, modyfikatory dostępu).
  • Dynamiczne tworzenie obiektów i wywoływanie metod: Tworzenie instancji klas i wywoływanie ich metod po nazwie w postaci łańcucha znaków.
  • Rozwój frameworków i bibliotek: Tworzenie elastycznych systemów zdolnych do analizowania i interakcji z kodem użytkownika (np. kontenery IoC, ORM).
  • Debugowanie i testowanie: Narzędzia do analizy kodu podczas wykonywania.
  • Automatyczne generowanie dokumentacji.

Przykład uzyskiwania informacji o klasie za pomocą ReflectionClass:

<?php
// Uzyskiwanie informacji o klasie stdClass
$reflectionClass = new ReflectionClass('stdClass');

echo $reflectionClass->getName(); // Wyświetli: stdClass

$methods = $reflectionClass->getMethods();
foreach ($methods as $method) {
    echo $method->getName() . "\n"; // Wyświetli nazwy metod (jeśli istnieją)
}

Przykład dynamicznego wywołania metody:

<?php
class MyClass {
    public function myMethod($arg) {
        return "Cześć, " . $arg;
    }
}

$className = 'MyClass';
$methodName = 'myMethod';
$argument = 'świat';

$reflectionMethod = new ReflectionMethod($className, $methodName);
$object = new $className();

$result = $reflectionMethod->invoke($object, $argument);
echo $result; // Wyświetli: Cześć, świat