Zend_CodeGenerator RéferenceClasses abstraites et interfacesZend_CodeGenerator_AbstractLa 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 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éthode 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_AbstractZend_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_AbstractZend_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êtesZend_CodeGenerator_Php_BodyZend_CodeGenerator_Php_Body est utilisée pour générer du code procédural à inclure dans un fichier. Vous passez donc simplement du contenu à cet objet, qui vous le ressortira une fois son generate() appelé. L'API de cette classe est comme suit :
Zend_CodeGenerator_Php_ClassZend_CodeGenerator_Php_Class est utilisée pour générer du code de classes PHP. Les fonctions de bases génèrent la classe PHP elle-même, ainsi que ses commentaires PHP DocBlock. 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_DocblockZend_CodeGenerator_Php_Docblock est utilisée pour générer des éléments PHP 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_TagZend_CodeGenerator_Php_Docblock_Tag est utilisée pour créer des tags d'annotation PHP DocBlck. 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_ParamZend_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_ReturnZend_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_FileZend_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_ContainerZend_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_MethodZend_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_ParameterZend_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 :
Plusieurs problèmes peuvent apparaitre lorsque l'on veut paramétrer un NULL, un booléen ou un tableau en tant que valeur par défaut. Pour ceci le conteneur Zend_CodeGenerator_Php_ParameterDefaultValue peut être utilisé, par exemple :
En interne setDefaultValue() convertit aussi les valeurs qui peuvent être exprimées en PHP dans le conteneur. Zend_CodeGenerator_Php_PropertyZend_CodeGenerator_Php_Property est utilisée pour décrire une propriété, nous entendons par là une variable ou une constante. 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 :
|