Reflection
class Reflection extends Alvine
Analysieren eines Quelltextes
Die Klasse Reflection analysiert einen übergebenen Quelltext und sucht nach Klassen, Interfaces und Traits. Für jedes dieser Strukturen wird ein Representation-Objekt erstellt und zurückgegeben.
$struct ist eine Collection von Representation-Objekten
$source = new Source('<?php class myClass {} ');
$object = new Reflection($source);
$struct = $object->getRepresentation();
Properties
protected array | $token | ||
protected string | $namespace | ||
protected Exceptions] | $error | Fehlermeldungen | |
protected Representation> | $structure |
Methods
Aufsplitten des Quelltextes
Namensraum ergänzen
Struktur initialisieren
Nach Sequenz suchen
String-Repräsentation der Token
Setzt den Namensraum
Repräsentation der Struktur
Details
at line 90
__construct(Source $source)
Neue Reflection-Struktur
Der übergebene Quelltext entspricht einer Datei. Diese darf z.B. nur eine Namespace-Information enthalten.
at line 109
protected string
splitSourceToToken($source)
Aufsplitten des Quelltextes
at line 131
protected string
extendsNamespaces(type $string)
Namensraum ergänzen
Erweitert lokale Klasse/Train/Interface um den gesetzten Namensraum.
at line 149
protected Reflection
initStructure(string $source)
Struktur initialisieren
Strukturen analysieren und daraus ReflectionClass Objekte erstellen. Sollte der Quelltext noch nicht eingebunden sein (vom PHP-Parser geparsed) so includiert diese Methode den Quelltext, indem Sie den Quelltext in eine temporäre Datei schreibt und diese einbindet.
at line 245
protected Token>
scanSequence(array $trigger, array $tokenArray, array $stopToken = [], boolean $stopOnFirst = false)
Nach Sequenz suchen
Dieser Methode kann nach einer Token-Squenz innerhalb der Gesamtmenge an Token gesucht werden. Das Ergebnis wird als Array der gefundenen Token zurückgegeben.
Mit folgender Struktur können Klassen, Interfaces und Extendens in einer Token-Liste gefunden werden.
$class = $this->getSequence([\T_CLASS, \T_INTERFACE, \T_TRAIT], $this->token, [T_IMPLEMENTS, T_EXTENDS, T_WHITESPACE, ';', '{']);
if($class) $this->classes[] = new \ReflectionClass($this->extendsNamespaces($class));
if(!$this->currentKey) break;
$mem = $this->currentKey;
$extends = $this->getSequence([\T_EXTENDS], $this->token, [\T_CLASS, \T_IMPLEMENTS, ';', '{'], true);
if(!$this->currentKey) break;
$this->currentKey = $mem;
$implements = $this->getSequence([\T_IMPLEMENTS], $this->token, [T_CLASS, ';', '{'], true);
$this->currentKey = $mem;
at line 299
protected string
getSequence(array $trigger, array $tokenArray, integer|string>] $stopToken = [], boolean $stopOnFirst = false)
String-Repräsentation der Token
Ruft die Methode scanSequence auf und wandelt die Token in eine Zeichenkette um.
at line 315
protected Collection
initNamespace()
Setzt den Namensraum
Diese Methode sucht nach der Namespace definition und setzt diesen für die lokale Weiterverarbeitung im Objekt. Der Name wird mit führenden und abschliessenden \ gespeichert.
at line 333
Representation>
getRepresentation()
Repräsentation der Struktur
Im Quelltext enthaltene Strukturelemente