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