Zend_CodeGenerator Réference
Classes abstraites et interfaces
Zend_CodeGenerator_Abstract
La classe de base de CodeGenerator dont toutes les classes héritent.
Elle propose l'API suivante:
Le constructeur appelle _init() (restée vide, à
écrire dans les classes concrêtes),
puis passe le paramètre $options à
setOptions(), et enfin appelle
_prepare() (encore une fois, vide, à écrire dans les
classes concrêtes).
Comme partout dans le Zend Framework, setOptions()
compare les clés du tableau passé comme paramètre à des setters
de la classe, et passe donc la valeur à la bonne méhode si trouvée.
__toString() est marquée final, et proxie vers
generate().
setSourceContent() et
getSourceContent() permettent soit de définir le contenu par défaut
soit de remplacer ce contenu par la tâche de génération.
Zend_CodeGenerator_Php_Abstract
Zend_CodeGenerator_Php_Abstract étend
Zend_CodeGenerator_Abstract et ajoute des méthodes
permettant de savoir si le contenu a changé et aussi le nombre d'indentation
à utiliser avant chaque ligne de code à générer. L'API est la suivante:
Zend_CodeGenerator_Php_Member_Abstract
Zend_CodeGenerator_Php_Member_Abstract est une classe de base
pour générer des propriétés ou des méthodes de classe, et propose des accesseurs et des
mutateurs pour créer la visibilité, l'abstraction, la staticité ou la finalité.
L'API est la suivante:
Classes CodeGenerator concrêtes
Zend_CodeGenerator_Php_Body
Zend_CodeGenerator_Php_Body est utilisée pour générer
du code PHP procédural à inclure dans un fichier. Vous passez donc simplement
du contenu à cet objet, qui vous le resortira une fois son
generate() appelé.
L'API de cette classe est comme suit:
Zend_CodeGenerator_Php_Class
Zend_CodeGenerator_Php_Class est utilisée pour
générer du code de classes PHP. Les fonctions de bases génèrent la classe
elle-même, ainsi que ses commentaires PHPDoc. Vous pouvez bien sûr
spécifier la classe comme abstraite, finale, ou encore lui rajouter des
constantes/attributs/méthodes sous forme d'autres objets décrits eux
aussi dans ce chapitre.
Voici l'API:
La méthode setProperty() accepte soit un tableau qui peut être utilisé pour
générer une instance de Zend_CodeGenerator_Php_Property,
soit directement une instance de Zend_CodeGenerator_Php_Property.
setMethod() se manipule de la même manière, et utilise une instance de
Zend_CodeGenerator_Php_Method.
A noter que setDocBlock() attend une instance de
Zend_CodeGenerator_Php_DocBlock.
Zend_CodeGenerator_Php_Docblock
Zend_CodeGenerator_Php_Docblock est utilisée pour générer du code
PHPDoc arbitraire, y compris les commentaires de description longs ou courts.
Les tags annotation doivent être spécifiés via setTag() ou setTags()
qui prennent en paramètre un objet Zend_CodeGenerator_Php_Docblock_Tag
ou un tableau qui permettra sa construction.
Voici l'API:
Zend_CodeGenerator_Php_Docblock_Tag
Zend_CodeGenerator_Php_Docblock_Tag est utilisée pour créer
des tags d'annotation PHPdoc. Les tags doivent posséder un nom (la partie qui suit
immédiatement le '@') et une description (ce qui suit le tag).
Voici l'API:
Zend_CodeGenerator_Php_DocBlock_Tag_Param
Zend_CodeGenerator_Php_DocBlock_Tag_Param est une version
spéciale de Zend_CodeGenerator_Php_DocBlock_Tag, et
permet de représenter un paramètre d'une méthode. Le nom du tag est donc connu,
mais des informations additionnelles sont requises : le nom du paramètre
et le type de données qu'il représente.
L'API de cette classe est la suivante:
Zend_CodeGenerator_Php_DocBlock_Tag_Return
Zend_CodeGenerator_Php_Docblock_Tab_Return est une variante
qui permet de modéliser la valeur de retour d'une méthode. Dans ce cas, le nom du tag
est connu ('return') mais pas le type de retour.
Voici l'API:
Zend_CodeGenerator_Php_File
Zend_CodeGenerator_Php_File est utilisée pour générer
le contenu complet d'un fichier PHP. Le fichier peut contenir des classes, du code
PHP ou encore des commentaires PHPDoc.
Pour ajouter des classes, vous devrez soit passer un tableau d'informations à passer au constructeur
de Zend_CodeGenerator_Php_Class, soit un objet de cette dernière classe directement.
Idem concernant les commentaires PHPDoc et la classe Zend_CodeGenerator_Php_Docblock
Voici l'API de la classe:
Zend_CodeGenerator_Php_Member_Container
Zend_CodeGenerator_Php_Member_Container est utilisée en interne par
Zend_CodeGenerator_Php_Class pour garder une trace des attributs et
des méthodes de classe. Ceux-ci sont indéxés par nom.
Voici l'API de cette classe:
Zend_CodeGenerator_Php_Method
Zend_CodeGenerator_Php_Method est utilisée pour décrire
une méthode d'une classe, et va générer son code, et ses éventuels commentaires
PHPDoc. La visibilité et le statut (abstraite, finale, statique) peuvent être
spécifiées par la classe parente
Zend_CodeGenerator_Php_Member_Abstract. Enfin,
il est aussi possible de spécifier les paramètres de la méthodes, et sa valeur de
retour.
Les paramètres peuvent être indiqués via setParameter() ou
setParameters() qui acceptent soit des tableaux décrivant les paramètres
à passer au constructeur deZend_CodeGenerator_Php_Parameter, soit
des objets de cette dernière classe.
L'API de cette classe est la suivante:
Zend_CodeGenerator_Php_Parameter
Zend_CodeGenerator_Php_Parameter est utilisée pour décrire
un paramètre de méthode. Chacun doit avoir une position (sinon l'ordre de leur enregistrement
sera utilisé par défaut), une valeur par défaut, un type et enfin un nom.
Voici l'API:
Zend_CodeGenerator_Php_Property
Zend_CodeGenerator_Php_Property est utilisée pour décrire une propriété
PHP, nous entendons par là une variable ou une constante PHP. Une valeur par défaut peut alors
être spécifiée. La visibilité de la propriété peut être définie par la classe parente,
Zend_CodeGenerator_Php_Member_Abstract.
Voici l'API: