Middle
Na co je v PHP reflexe?
sobes.tech AI
Odpověď od AI
Reflexe v PHP umožňuje prozkoumávat a upravovat strukturu kódu za běhu. To zahrnuje získávání informací o třídách, objektech, metodách, vlastnostech, konstantách a prostorech jmen.
Hlavní použití:
- Inspice: Získávání metadat o existujícím kódu (názvy metod, argumenty, modifikátory přístupu).
- Dynamické vytváření objektů a volání metod: Vytváření instancí tříd a volání jejich metod podle řetězce s názvem.
- Vývoj frameworků a knihoven: Vytváření flexibilních systémů schopných analyzovat a interagovat s uživatelským kódem (například IoC kontejnery, ORM).
- Ladění a testování: Nástroje pro analýzu kódu za běhu.
- Automatické generování dokumentace.
Příklad získání informací o třídě pomocí ReflectionClass:
<?php
// Získání informací o třídě stdClass
$reflectionClass = new ReflectionClass('stdClass');
echo $reflectionClass->getName(); // Vypíše: stdClass
$methods = $reflectionClass->getMethods();
foreach ($methods as $method) {
echo $method->getName() . "\n"; // Vypíše názvy metod (pokud jsou)
}
Příklad dynamického volání metody:
<?php
class MyClass {
public function myMethod($arg) {
return "Ahoj, " . $arg;
}
}
$className = 'MyClass';
$methodName = 'myMethod';
$argument = 'svět';
$reflectionMethod = new ReflectionMethod($className, $methodName);
$object = new $className();
$result = $reflectionMethod->invoke($object, $argument);
echo $result; // Vypíše: Ahoj, svět