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. 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() . 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: 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: 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í: