class Source extends Alvine implements Countable

Verarbeiten von Quelltexten

Diese Klasse stellt grundlegende Funktionen für die Arbeit mit Quelltexten zur Verfügung. Die einzelnen Funktionen bieten die Möglichkeit Zeilen einzurücken (indent) oder auszurücken (outdent).

// Der Quelltext mit Einrückung (vier Leerzeichen)
$source = '    $a=4';
// Einrückung entfernen
(new Source($source))->outdent(0);
// Ergebnis
$a=4

Die Klasse besitzt auch eine statische Methode um aus einem ReflectionClass-Objekt einen Quelltext zu erstellen. Dazu werden die Bestandteile an die zuständigen Renderklassen weitergegeben.

$reflection = new \ReflectionClass('\Alvine\Core\Alvine');
echo (string) \Alvine\Development\Upkeep\Source::getInstanceFromReflection($reflection);

Die Klassenstruktur sieht folgendermassen aus


Alvine UML-Diagramm


Constants

INDENT

Einrücken 4 Leerzeichen

LINEFEED

Zeilenumbruch im Code

Properties

protected string $reference Bezeichnung für die Referenz, die den Quelltext bearbeitet hat.
protected StringList $lines

Methods

__construct(string $source)

Neues Objekt

string|null
getLine(integer $line)

Gibt den Inhalt der angegebenen Zeile der Quelldatei als String zurück.

string|null
getLines(integer $from, integer $to)

Gibt den Inhalt der angegebenen Zeilen der Quelldatei als String zurück.

setLine(integer $line, string $source)

Zeilen

string
getSource()

Quelltext

setSource(string $source)

Quelle

indent(integer $line, integer $count = 1)

Einrücken

outdent(integer $line, integer $count = 1)

Ausrücken

static array
getCodeSegements(string $source)

Codeabschnitt zerlegen

replace(string $name, string $snippet)

Codeabschnitt austauschen

string
__toString()

Ausgabe des Quelltextes

static Source
getInstanceFromReflection(ReflectionClass>|ReflectionClass $reflection)

Objekt erstellen

static 
getTypedArrayValue(array $value)

No description

static string
getTypedValue(mixed $value)

Formatieren eines Wertes

integer
count()

Anzahl der Zeilen

Details

at line 97
__construct(string $source)

Neues Objekt

Neues Objekt mit dem übergebenen Quelltext

Parameters

string $source Quelltext

at line 112
string|null getLine(integer $line)

Gibt den Inhalt der angegebenen Zeile der Quelldatei als String zurück.

Parameters

integer $line Zeilennummer (die erste Zeile ist die 0)

Return Value

string|null Den Inhalt der referenzierten Zeile oder null

at line 126
string|null getLines(integer $from, integer $to)

Gibt den Inhalt der angegebenen Zeilen der Quelldatei als String zurück.

Parameters

integer $from Zeilennummer (die erste Zeile ist die 0)
integer $to Zeilennummer (die erste Zeile ist die 0)

Return Value

string|null Den Inhalt der referenzierten Zeile oder null

at line 144
setLine(integer $line, string $source)

Zeilen

Setzt den Inhalt der angegebenen Zeile der Quelldatei als String.

Parameters

integer $line Zeilennummer (die erste Zeile ist die 0)
string $source Inhalt

\Alvine\Development\Upkeep\Source Dieses Objekt

at line 157
string getSource()

Quelltext

Gibt den Inhalt der Quelldatei als String zurück.

Return Value

string Quelle

at line 170
Source setSource(string $source)

Quelle

Setzt die übergeben Zeichenkette als neuen Quelltext

Parameters

string $source Inhalt

Return Value

Source Dieses Objekt

at line 195
Source indent(integer $line, integer $count = 1)

Einrücken

Rückt eine Zeile weiter ein. Die Nummerierung der Zeilen beginnt bei 0.

Parameters

integer $line Zeilenzahl (beginnend mit 0);
integer $count Anzahl der Einrückungen;

Return Value

Source Dieses Objekt

at line 213
Source outdent(integer $line, integer $count = 1)

Ausrücken

Rückt eine Zeile nach links. Die Nummerierung der Zeilen beginnt bei 0.

Parameters

integer $line Zeilenzahl (beginnend mit 0);
integer $count Anzahl der Einrückungen;

Return Value

Source Dieses Objekt

at line 237
static protected array getCodeSegements(string $source)

Codeabschnitt zerlegen

Diese Methode zerlegt eine Codeabschnitt, der durch eine XML-Marker <alvine-generated /> eingefasst ist.

<alvine-generated name="" ref="" created=""></alvine-generated>
// name:    eindeutiger Name der Eingrenzung innerhalb der Datei
// ref:     Referenzierung auf das Erstellscript
// created: Erstelldatum in der Form YYYY-mm-dd

Parameters

string $source Inhalt der Quelldatei

Return Value

array Liste mit den gefundenen Einträgen.

at line 282
Source replace(string $name, string $snippet)

Codeabschnitt austauschen

Diese Methode schneidet aus einer Quelldatei einen Codebereich aus und ersetzt diesen durch einen neue Zeichenkette. Dabei muss der Codebereich der ausgetauscht werden soll mit den Tags umgeben sein.

// <alvine-generated name="segName" ref="this" created=""> // <\alvine-generated>

Der Bereich zwischen den Tags wird ausgetauscht. Die Identifizierung des Code-Segments erfolgt über den Namen der im Tag angegebn wurde. In dem Beispiel segName

// Beispiel
$obj->replace($name, $snippet, $reference);

Parameters

string $name Name der Markierung
string $snippet Inhalt

Return Value

Source Dieses Objekt

See also

Source::getCodeSegements

at line 314
string __toString()

Ausgabe des Quelltextes

Die Methode ruft die Methode getSource auf und erzeugt somit den Quelltext und gibt diesen als Zeichenkette zurück.

echo  (stirng) new Source($source);

Return Value

string Quelltext

at line 333
static Source getInstanceFromReflection(ReflectionClass>|ReflectionClass $reflection)

Objekt erstellen

Objekt aus einem \Reflection-Objekt erstellen.

$reflection = new \ReflectionClass('\Alvine\Development\Upkeep\TestClassForReflectionA')
echo Source::getInstanceFromReflection($reflection);
// ... class TestClassForReflectionA { ...

Parameters

ReflectionClass>|ReflectionClass $reflection

Return Value

Source

at line 361
static protected getTypedArrayValue(array $value)

Parameters

array $value

at line 404
static string getTypedValue(mixed $value)

Formatieren eines Wertes

Diese Methode formatiert einen Wert in der Form, das die Zeichenkette in einer Zuweisung oder einem Vergleich stehen kann. Das bedeutet, das z.B. eine Zeichenkette in Anführungszeichen gesetzt wird.

echo Source::getTypedValue(true);
// 'true'

Parameters

mixed $value Wert

Return Value

string Formatierte Zeichenkette

at line 436
integer count()

Anzahl der Zeilen

Return Value

integer