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
das 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:
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: