Sobes.tech
Middle

Барои чӣ рефлексия дар PHP лозим аст?

sobes.tech AI

Ҷавоб аз AI

Reflection дар PHP имкон медиҳад, ки сохтори коди худро дар вақти иҷрои баррасӣ ва тағир диҳед. Ин дар бар мегирад гирифтани маълумот дар бораи синфҳо, объектҳо, методҳо, хусусиятҳо, константҳо ва фазоҳои ном.

Барномаҳои асосӣ:

  • Интроспекция: Гирифтани метадонатҳо дар бораи коди мавҷуда (номҳои методҳо, аргументҳо, модификаторҳои дастрасӣ).
  • Тавлиди динамикӣ ва даъвати методҳо: Тавлид кардани намунаҳои синфҳо ва даъвати методҳои онҳо бо номи сатрӣ.
  • Рушди фреймворҳо ва китобхонаҳо: Тавлиди системаҳои чандир, ки метавонанд коди корбарро таҳлил ва бо он муошират кунанд (масалан, IoC контейнерҳо, ORM).
  • Дебаггинг ва тест: Асбобҳо барои таҳлили коди дар вақти иҷро.
  • Генератсияи автоматии ҳуҷҷатгузорӣ.

Масали гирифтани маълумот дар бораи синф бо истифодаи ReflectionClass:

<?php
// Гирифтани маълумот дар бораи синфи stdClass
$reflectionClass = new ReflectionClass('stdClass');

echo $reflectionClass->getName(); // Натиҷа: stdClass

$methods = $reflectionClass->getMethods();
foreach ($methods as $method) {
    echo $method->getName() . "\n"; // Номи методҳоро мебарорад (агар мавҷуд бошанд)
}

Масали даъвати динамикии метод:

<?php
class MyClass {
    public function myMethod($arg) {
        return "Салом, " . $arg;
    }
}

$className = 'MyClass';
$methodName = 'myMethod';
$argument = 'ҷаҳон';

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

$result = $reflectionMethod->invoke($object, $argument);
echo $result; // Натиҷа: Салом, ҷаҳон