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: