Sobes.tech
Middle

Kam skirta PHP reflekcija?

sobes.tech AI

Atsakymas iš AI

PHP refleksija leidžia tyrinėti ir keisti kodo struktūrą vykdymo metu. Tai apima informaciją apie klases, objektus, metodus, savybes, konstantas ir vardų erdves.

Pagrindinės taikymo sritys:

  • Inspicijacija: Esamo kodo metaduomenų gavimas (metodų pavadinimai, argumentai, prieigos modifikatoriai).
  • Dinamiškas objektų kūrimas ir metodų iškvietimas: Klasės pavyzdžių kūrimas ir jų metodų iškvietimas pagal eilutės pavadinimą.
  • Rėmų ir bibliotekų kūrimas: Lankstinių sistemų kūrimas, gebančių analizuoti ir sąveikauti su naudotojo kodu (pvz., IoC konteineriai, ORM).
  • Klaidų šalinimas ir testavimas: Įrankiai kodo analizei vykdymo metu.
  • Automatinis dokumentacijos generavimas.

Pavyzdys, kaip gauti informacijos apie klasę naudojant ReflectionClass:

<?php
// Gauti informaciją apie stdClass klasę
$reflectionClass = new ReflectionClass('stdClass');

echo $reflectionClass->getName(); // Išves: stdClass

$methods = $reflectionClass->getMethods();
foreach ($methods as $method) {
    echo $method->getName() . "\n"; // Išves metodų pavadinimus (jei yra)
}

Dinaminių metodų iškvietimo pavyzdys:

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

$className = 'MyClass';
$methodName = 'myMethod';
$argument = 'pasaulis';

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

$result = $reflectionMethod->invoke($object, $argument);
echo $result; // Išves: Labas, pasaulis