PHP Reflexe
Nette\Utils\Reflection je statická třída s užitečnými funkcemi pro PHP reflexi. Jejím úkolem je opravovat nedostatky nativních tříd a sjednocovat chování napříč různými verzemi PHP.
Instalace:
Všechny příklady předpokládají vytvořený alias:
areCommentsAvailable(): bool
Zjistí, zda má reflexe přístup k PHPdoc komentářům. Komentáře mohou být nedostupné kvůli opcode cache, viz třeba direktiva opcache.save-comments.
expandClassName(string $name, ReflectionClass $context): string
Expanduje název třídy $name
na její plný název v kontextu třídy $context
, tedy v kontextu
jejího jmenného prostoru a definovaných aliasů. Tedy vlastně říká, jak by PHP parser $name
chápal, kdyby byl
zapsaný v těle třídy $context
.
getMethodDeclaringMethod(ReflectionMethod $method): ReflectionMethod
Vrací reflexi metody, která obsahuje deklaraci metody $method
. Obvykle je každá metoda svou vlastní
deklarací, ale tělo metody se může nacházet i v traitě a pod jiným názvem.
Protože PHP neposkytuje dostatečné informace, pomocí kterých lze skutečnou deklaraci zjistit, využívá Nette vlastní heuristiku, která by měla být spolehlivá.
getPropertyDeclaringClass(ReflectionProperty $prop): ReflectionClass
Vrací reflexi třídy či traity, která obsahuje deklaraci property $prop
. Property totiž může být
deklarovaná i v traitě.
Protože PHP neposkytuje dostatečné informace, pomocí kterých lze skutečnou deklaraci zjistit, využívá Nette vlastní heuristiku, která není spolehlivá.
isBuiltinType(string $type): bool
Zjistí, zda je $type
vestavěný typ PHP. V opačném případě jde o název třídy.
Použijte Nette\Utils\Validator::isBuiltinType().
toString($reflection): string
Převede reflexi na lidsky srozumitelný řetězec.