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 92
__construct(Source $source)
Neue Reflection-Struktur
Der übergebene Quelltext entspricht einer Datei. Diese darf z.B. nur eine Namespace-Information enthalten.
at line 111
protected string
splitSourceToToken($source)
Aufsplitten des Quelltextes
at line 133
protected string
extendsNamespaces(type $string)
Namensraum ergänzen
Erweitert lokale Klasse/Train/Interface um den gesetzten Namensraum.
at line 151
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 248
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 302
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 318
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 336
Representation>
getRepresentation()
Repräsentation der Struktur
Im Quelltext enthaltene Strukturelemente