Introducción a Zend Framework

 Aprendiendo Zend Framework

Apéndice

 Referencia de 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
  • Traducción al 26.9% - Actualizado el 2011-11-16 - Revisión 24249 - Versión ZF 1.11.x

    Capítulo 20. Zend_CodeGenerator

    20.1. Introducción

    Zend_CodeGenerator ofrece facilidades para generar código arbitrario usando una interfaz orientada a objetos, tanto para crear código nuevo como para actualizar código existente. Mientras que la implementación actual se limita a generar código PHP , usted fácilmente puede extender la clase base a fin de proveer generación de código para otras tareas como: JavaScript, archivos de configuración, apache vhost, etc.

    20.1.1. Teoría de Operación

    En el caso de uso más típico, simplemente instanciará una clase de generación de código y podrá pasarle tanto la configuración adecuada o configurarla después de la instanciación. Para generar el código, simplemente haga "echo" del objeto o llame a su método generate() .

    // Pasando la configuración al constructor:
    $file = new Zend_CodeGenerator_Php_File(array(
        
    'classes' => array(
            new 
    Zend_CodeGenerator_Php_Class(array(
                
    'name'    => 'World',
                
    'methods' => array(
                    new 
    Zend_CodeGenerator_Php_Method(array(
                        
    'name' => 'hello',
                        
    'body' => 'echo \'Hello world!\';',
                    )),
                ),
            )),
        )
    ));

    // Configurando después de la instanciación
    $method = new Zend_CodeGenerator_Php_Method();
    $method->setName('hello')
           ->
    setBody('echo \'Hello world!\';');

    $class = new Zend_CodeGenerator_Php_Class();
    $class->setName('World')
          ->
    setMethod($method);

    $file = new Zend_CodeGenerator_Php_File();
    $file->setClass($class);

    // Mostrar el archivo generado
    echo $file;

    // o grabarlo a un archivo:
    file_put_contents('World.php'$file->generate());

    Ambos ejemplos anteriores mostrarán el mismo resultado:

    <?php

    class World
    {

        public function 
    hello()
        {
            echo 
    'Hello world!';
        }

    }

    Otro caso de uso común es actualizar el código actual -- por ejemplo, para añadir un método a una clase. En ese caso, primero debe inspeccionar el código actual utilizando reflexión, y entonces añadir su nuevo método. Zend_CodeGenerator lo hace trivialmente simple, aprovechando Zend_Reflection .

    Como ejemplo, digamos que hemos grabado lo anterior al archivo " World.php ", y que ya está incluído. Podríamos entonces hacer lo siguiente:

    $class Zend_CodeGenerator_Php_Class::fromReflection(
        new 
    Zend_Reflection_Class('World')
    );

    $method = new Zend_CodeGenerator_Php_Method();
    $method->setName('mrMcFeeley')
           ->
    setBody('echo \'Hello, Mr. McFeeley!\';');
    $class->setMethod($method);

    $file = new Zend_CodeGenerator_Php_File();
    $file->setClass($class);

    // Mostrar el archivo generado
    echo $file;

    // O mejor aún, volver a grabarlo al archivo original:
    file_put_contents('World.php'$file->generate());

    El archivo de la clase resultante se vería así:

    <?php

    class World
    {

        public function 
    hello()
        {
            echo 
    'Hello world!';
        }

        public function 
    mrMcFeeley()
        {
            echo 
    'Hellow Mr. McFeeley!';
        }

    }
    digg delicious meneame google twitter technorati facebook

    Comentarios

    Loading...