Zend_CodeGenerator Referenz
Abstrakte Klassen und Interfaces
Zend_CodeGenerator_Abstract
Die Basisklasse von der alle CodeGenerator Klassen abgeleitet sind und die
minimal notwendige Funktionalität anbietet. Dessen API ist wie
folgt:
Der Constructor ruft zuerst _init() auf (welches für eine
konkrete erweiterte Klasse für die Implementation leer gelassen ist), übergibt dann
den $options Parameter an setOptions()
und ruft zuletzt _prepare() auf (welches auch von der
erweiternden Klasse implementiert werden muß).
Wie die meisten Klassen im Zend Framework, vergleicht
setOptions() den Schlüssel einer Option mit den in der
Klasse existierenden Settern, und übergibt den Wert an die gefundene Methode.
__toString() ist als final markiert, und leitet auf
generate() weiter.
setSourceContent() und
getSourceContent() sind dazu vergesehen entweder den
Standardinhalt für den zu erzeugenden Code zu setzen, oder um gesetzte Inhalte zu
ersetzen sobald alle Arbeiten der Erzeugung beendet wurden.
Zend_CodeGenerator_Php_Abstract
Zend_CodeGenerator_Php_Abstract erweitert
Zend_CodeGenerator_Abstract, und fügt einige Eigenschaften
hinzu für das Verfolgen ob Inhalte geändert wurden sowie der Anzahl an Einrückungen
die vorhanden sein sollten bevor Inhalte erzeugt werden. Die API
ist wie folgt:
Zend_CodeGenerator_Php_Member_Abstract
Zend_CodeGenerator_Php_Member_Abstract ist eine Basisklasse
für die Erstellung von Klassen-Member -- Eigenschaften und Methoden -- und bietet
Zugriffs- und Änderungsmethoden für die Ausführung der Sichtbarkeit; ob ein
Member Abstrakt, Statisch, oder Final ist; und der Name des Members. Die
API ist wie folgt:
Konkrete CodeGenerator Klassen
Zend_CodeGenerator_Php_Body
Zend_CodeGenerator_Php_Body ist dazu gedacht generellen
prozeduralen Code in einer Datei einzufügen. Als solches kann man einfach den Inhalt
für das Objekt setzen, und es wird den Inhalt zurückgeben wenn man
generate() aufruft.
Die API der Klasse ist wie folgt:
Zend_CodeGenerator_Php_Class
Zend_CodeGenerator_Php_Class ist für die Erstellung von
PHP Klassen gedacht. Die Basisfunktionalität ist nur die
Erstellung der PHP Klasse selbst, sowie optional den
betreffenden PHP DocBlock. Klassen können von anderen Klassen
abgeleitet sein, oder diese Implementieren, und können als Abstrakt markiert
sein. Bei Verwendung von anderen CodeGenerator Klassen kann man auch
Klassenkonstanten, Eigenschaften und Methoden hinzufügen.
Die API ist wie folgt:
Die setProperty() Methode akzeptiert ein Array von
Informationen, die verwendet werden können um eine Instanz von
Zend_CodeGenerator_Php_Property zu erstellen -- oder einfach
eine Instanz von Zend_CodeGenerator_Php_Property selbst.
Genauso akzeptiert setMethod() entweder ein Array von
Information für die Erstellung einer
Zend_CodeGenerator_Php_Method Instanz oder eine konkrete
Instanz dieser Klasse.
Beachte das setDocBlock() eine Instanz von
Zend_CodeGenerator_Php_DocBlock erwartet.
Zend_CodeGenerator_Php_Docblock
Zend_CodeGenerator_Php_Docblock kann verwendet werden um
PHP DocBlocks zu erstellen, inklusive aller standardmäßigen
DocBlock Features: Kurz- und Langbeschreibung sowie zusätzliche Tags.
Zusätzliche Tags können durch Verwendung der setTag() und
setTags() Methoden gesetzt werden; diese nehmen entweder
ein Array an dass das Tag beschreibt das an den
Zend_CodeGenerator_Php_Docblock_Tag Contructor übergeben
wird, oder eine Instanz dieser Klasse selbst.
Die API ist wie folgt:
Zend_CodeGenerator_Php_Docblock_Tag
Zend_CodeGenerator_Php_Docblock_Tag ist für die Erstellung
von eigenen Tags, zum Einfügen in PHP DocBlocks, gedacht. Von
Tags wird erwartet das Sie einen Namen enthalten (Der Teil der unmittelbar dem '@'
Symbol folgt) und eine Beschreibung (alles das dem Tag Namen folgt).
Die API der Klasse ist wie folgt:
Zend_CodeGenerator_Php_DocBlock_Tag_Param
Zend_CodeGenerator_Php_DocBlock_Tag_Param ist eine spezielle
Version von Zend_CodeGenerator_Php_DocBlock_Tag, und
repräsentiert einen Parameter einer Methode. Das TagName ist hierbei bekannt
("param"), aber durch die Form des Tags, werden zusätzliche Informationen benötigt
um Ihn zu erzeugen: den Namen des Parameter und den Datentyp den dieser
repräsentiert.
Die API dieser Klasse ist wie folgt:
Zend_CodeGenerator_Php_DocBlock_Tag_Return
Wie die Variante des Param DocBlock Tags ist
Zend_CodeGenerator_Php_Docblock_Tab_Return eine Variante
eines Tags für die Darstellung eines Rückgabewerts einer Methode. In diesem Fall ist
der Name des Tags bekannt ("return"), aber es benötigt einen Rückgabetyp.
Die API der Klasse ist wie folgt:
Zend_CodeGenerator_Php_File
Zend_CodeGenerator_Php_File wird verwendet um den kompletten
Inhalt einer Datei zu erstellen die PHP Code enthalten wird. Die
Datei kann Klassen oder eigenen PHP Code enthalten, und wenn
gewünscht einen Datei-Level Docblock.
Wenn der Datei Klassen hinzugefügt werden, muß man entweder ein Array von
Informationen übergeben die an den Constructor von
Zend_CodeGenerator_Php_Class übergeben werden, oder eine
Instanz dieser Klasse. Genau wie bei den DocBlocks, muß man Informationen für den
Constructor von Zend_CodeGenerator_Php_Docblock übergeben die
verwendet werden, oder eine Instanz dieser Klasse.
Die API der Klasse ist wie folgt:
Zend_CodeGenerator_Php_Member_Container
Zend_CodeGenerator_Php_Member_Container wird intern von
Zend_CodeGenerator_Php_Class verwendet um die Klassenmember
zu erheben -- Eigenschaften sowie Methoden. Diese werden durch den Namen indiziert,
indem die konkrete Instanz des Members als Wert verwendet wird.
Die API der Klasse ist wie folgt:
Zend_CodeGenerator_Php_Method
Zend_CodeGenerator_Php_Method beschreibt eine Klassenmethode,
und kann sowohl Code als auch den DocBlock für diese Methode erstellen. Die
Sichtbarkeit und der Status als Statisch, Abstrakt, oder Final kann, über die
Eltern-Klasse, Zend_CodeGenerator_Php_Member_Abstract,
angegeben werden. Letztendlich können die Parameter und Rückgabewerte für die
Methode spezifiziert werden.
Parameter könnnen durch Verwendung von setParameter() oder
setParameters() gesetzt werden. In jedem Fall, sollte der
Parameter entweder ein Array von Informationen sein die an den Constructor von
Zend_CodeGenerator_Php_Parameter übergeben werden, oder eine
Instanz dieser Klasse.
Die API der Klasse ist wie folgt:
Zend_CodeGenerator_Php_Parameter
Zend_CodeGenerator_Php_Parameter kann verwendet werden um
Methodenparameter zu spezifizieren. Jeder Parameter kann eine Position haben
(wenn nicht spezifiziert wird die Reihenfolge in der diese spezifiziert werden
verwendet), einen Standardwert, und einen Datentyp; ein Parametername wird
benötigt.
Die API der Klasse ist wie folgt:
Es gibt einige Probleme die auftreten können wenn man versucht
NULL, boolsche Werte oder Arrays als Standardwerte zu setzen.
Hierfür kann das Wert-Halte-Objekt
Zend_CodeGenerator_Php_ParameterDefaultValue verwendet
werden. Zum Beispiel:
setDefaultValue(
new Zend_CodeGenerator_Php_Parameter_DefaultValue("null")
);
$parameter->setDefaultValue(
new Zend_CodeGenerator_Php_Parameter_DefaultValue("array('foo', 'bar')")
);
]]>
Intern konvertiert setDefaultValue() die Werte, welche in
PHP nicht ausgedrückt werden können, in den Werte-Halter.
Zend_CodeGenerator_Php_Property
Zend_CodeGenerator_Php_Property beschreibt die Eigenschaft
einer Klasse, welche entweder eine Konstante oder eine Variable sein kann. In jedem
Fall, kann der Eigenschaft ein optionaler Standardwert assoziiert werden.
Zusätzlich kann die Sichtbarkeit von variablen Eigenschaften über die Elternklasse
Zend_CodeGenerator_Php_Member_Abstract gesetzt werden.
Die API der Klasse ist wie folgt: