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

__construct(Source $source)

Neue Reflection-Struktur

string
splitSourceToToken($source)

Aufsplitten des Quelltextes

string
extendsNamespaces(type $string)

Namensraum ergänzen

initStructure(string $source)

Struktur initialisieren

Token>
scanSequence(array $trigger, array $tokenArray, array $stopToken = [], boolean $stopOnFirst = false)

Nach Sequenz suchen

string
getSequence(array $trigger, array $tokenArray, integer|string>] $stopToken = [], boolean $stopOnFirst = false)

String-Repräsentation der Token

Collection
initNamespace()

Setzt den Namensraum

Representation>
getRepresentation()

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.

Parameters

Source $source Quelltext

at line 111
protected string splitSourceToToken($source)

Aufsplitten des Quelltextes

Parameters

$source

Return Value

string Klasse/Train/Interface mit Namensraum

at line 133
protected string extendsNamespaces(type $string)

Namensraum ergänzen

Erweitert lokale Klasse/Train/Interface um den gesetzten Namensraum.

Parameters

type $string Klasse/Train/Interface

Return Value

string Klasse/Train/Interface mit 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.

Parameters

string $source Sourcecode

Return Value

Reflection

at line 247
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;

Parameters

array $trigger Nach welchen Token soll gesucht werden (z.B. T_CLASS)
array $tokenArray Übergabe der gesamten Daten, durch die iteriert wird
array $stopToken Token die ein abbruch der Suche bedeuten (Integer und String bei ; } {)
boolean $stopOnFirst Abbruch beim ersten Auftreten eines Ergebnisses

Return Value

Token> Liste der gefundenen Token

at line 301
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.

Parameters

array $trigger Nach welchen Token soll gesucht werden (z.B. T_CLASS)
array $tokenArray Übergabe der gesamten Daten, durch die iteriert wird
integer|string>] $stopToken Token die ein abbruch der Suche bedeuten (Integer und String bei ; } {)
boolean $stopOnFirst Abbruch beim ersten Auftreten eines Ergebnisses

Return Value

string Repräsentation der gefundenen Token

at line 317
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.

Return Value

Collection

at line 335
Representation> getRepresentation()

Repräsentation der Struktur

Im Quelltext enthaltene Strukturelemente

Return Value

Representation> Struktur