Introduction au Zend Framework

 Apprendre Zend Framework

appendix

 Guide de référence Zend Framework


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 61.2% Update 2010-11-28 - Revision 23149 - Version ZF 1.11.x

    20.3. Zend_CodeGenerator Réference

    20.3.1. Classes abstraites et interfaces

    20.3.1.1. Zend_CodeGenerator_Abstract

    La classe de base de CodeGenerator dont toutes les classes héritent. Elle propose l'API suivante :

    abstract class Zend_CodeGenerator_Abstract
    {
        final public function 
    __construct(Array $options = array())
        public function 
    setOptions(Array $options)
        public function 
    setSourceContent($sourceContent)
        public function 
    getSourceContent()
        protected function 
    _init()
        protected function 
    _prepare()
        abstract public function 
    generate();
        final public function 
    __toString()
    }

    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.

    20.3.1.2. 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 :

    abstract class Zend_CodeGenerator_Php_Abstract
        
    extends Zend_CodeGenerator_Abstract
    {
        public function 
    setSourceDirty($isSourceDirty true)
        public function 
    isSourceDirty()
        public function 
    setIndentation($indentation)
        public function 
    getIndentation()
    }

    20.3.1.3. 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 :

    abstract class Zend_CodeGenerator_Php_Member_Abstract
        
    extends Zend_CodeGenerator_Php_Abstract
    {
        public function 
    setAbstract($isAbstract)
        public function 
    isAbstract()
        public function 
    setStatic($isStatic)
        public function 
    isStatic()
        public function 
    setVisibility($visibility)
        public function 
    getVisibility()
        public function 
    setName($name)
        public function 
    getName()
    }

    20.3.2. Classes CodeGenerator concrêtes

    20.3.2.1. Zend_CodeGenerator_Php_Body

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

    class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
    {
        public function 
    setContent($content)
        public function 
    getContent()
        public function 
    generate()
    }

    20.3.2.2. 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 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 :

    class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Class $reflectionClass
        
    )
        public function 
    setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
        public function 
    getDocblock()
        public function 
    setName($name)
        public function 
    getName()
        public function 
    setAbstract($isAbstract)
        public function 
    isAbstract()
        public function 
    setExtendedClass($extendedClass)
        public function 
    getExtendedClass()
        public function 
    setImplementedInterfaces(Array $implementedInterfaces)
        public function 
    getImplementedInterfaces()
        public function 
    setProperties(Array $properties)
        public function 
    setProperty($property)
        public function 
    getProperties()
        public function 
    getProperty($propertyName)
        public function 
    setMethods(Array $methods)
        public function 
    setMethod($method)
        public function 
    getMethods()
        public function 
    getMethod($methodName)
        public function 
    hasMethod($methodName)
        public function 
    isSourceDirty()
        public function 
    generate()
    }

    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.

    20.3.2.3. Zend_CodeGenerator_Php_Docblock

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

    class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Docblock $reflectionDocblock
        
    )
        public function 
    setShortDescription($shortDescription)
        public function 
    getShortDescription()
        public function 
    setLongDescription($longDescription)
        public function 
    getLongDescription()
        public function 
    setTags(Array $tags)
        public function 
    setTag($tag)
        public function 
    getTags()
        public function 
    generate()
    }

    20.3.2.4. Zend_CodeGenerator_Php_Docblock_Tag

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

    class Zend_CodeGenerator_Php_Docblock_Tag
        
    extends Zend_CodeGenerator_Php_Abstract
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Docblock_Tag $reflectionTag
        
    )
        public function 
    setName($name)
        public function 
    getName()
        public function 
    setDescription($description)
        public function 
    getDescription()
        public function 
    generate()
    }

    20.3.2.5. 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 :

    class Zend_CodeGenerator_Php_Docblock_Tag_Param
        
    extends Zend_CodeGenerator_Php_Docblock_Tag
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Docblock_Tag $reflectionTagParam
        
    )
        public function 
    setDatatype($datatype)
        public function 
    getDatatype()
        public function 
    setParamName($paramName)
        public function 
    getParamName()
        public function 
    generate()
    }

    20.3.2.6. 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 :

    class Zend_CodeGenerator_Php_Docblock_Tag_Param
        
    extends Zend_CodeGenerator_Php_Docblock_Tag
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Docblock_Tag $reflectionTagReturn
        
    )
        public function 
    setDatatype($datatype)
        public function 
    getDatatype()
        public function 
    generate()
    }

    20.3.2.7. 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 :

    class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
    {
        public static function 
    fromReflectedFilePath(
            
    $filePath,
            
    $usePreviousCodeGeneratorIfItExists true,
            
    $includeIfNotAlreadyIncluded true)
        public static function 
    fromReflection(Zend_Reflection_File $reflectionFile)
        public function 
    setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
        public function 
    getDocblock()
        public function 
    setRequiredFiles($requiredFiles)
        public function 
    getRequiredFiles()
        public function 
    setClasses(Array $classes)
        public function 
    getClass($name null)
        public function 
    setClass($class)
        public function 
    setFilename($filename)
        public function 
    getFilename()
        public function 
    getClasses()
        public function 
    setBody($body)
        public function 
    getBody()
        public function 
    isSourceDirty()
        public function 
    generate()
    }

    20.3.2.8. 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 :

    class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
    {
        public function 
    __construct($type self::TYPE_PROPERTY)
    }

    20.3.2.9. 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 :

    class Zend_CodeGenerator_Php_Method
        
    extends Zend_CodeGenerator_Php_Member_Abstract
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Method $reflectionMethod
        
    )
        public function 
    setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
        public function 
    getDocblock()
        public function 
    setFinal($isFinal)
        public function 
    setParameters(Array $parameters)
        public function 
    setParameter($parameter)
        public function 
    getParameters()
        public function 
    setBody($body)
        public function 
    getBody()
        public function 
    generate()
    }

    20.3.2.10. 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 :

    class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Parameter $reflectionParameter
        
    )
        public function 
    setType($type)
        public function 
    getType()
        public function 
    setName($name)
        public function 
    getName()
        public function 
    setDefaultValue($defaultValue)
        public function 
    getDefaultValue()
        public function 
    setPosition($position)
        public function 
    getPosition()
        public function 
    getPassedByReference()
        public function 
    setPassedByReference($passedByReference)
        public function 
    generate()
    }

    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 :

    $parameter = new Zend_CodeGenerator_Php_Parameter();
    $parameter->setDefaultValue(
        new 
    Zend_CodeGenerator_Php_Parameter_DefaultValue("null")
    );
    $parameter->setDefaultValue(
        new 
    Zend_CodeGenerator_Php_Parameter_DefaultValue("array('foo', 'bar')")
    );

    En interne setDefaultValue() convertit aussi les valeurs qui peuvent être exprimées en PHP dans le conteneur.

    20.3.2.11. Zend_CodeGenerator_Php_Property

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

    class Zend_CodeGenerator_Php_Property
        
    extends Zend_CodeGenerator_Php_Member_Abstract
    {
        public static function 
    fromReflection(
            
    Zend_Reflection_Property $reflectionProperty
        
    )
        public function 
    setConst($const)
        public function 
    isConst()
        public function 
    setDefaultValue($defaultValue)
        public function 
    getDefaultValue()
        public function 
    generate()
    }
    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...