update DOC-ES
[zend.git] / documentation / manual / es / module_specs / Zend_CodeGenerator-Introduction.xml
blob772d66a4cd7fff351e4b080a652423c34a42fb9d
1 <?xml version="1.0" encoding="UTF-8"?>
2     <!-- EN-Revision: 15998 -->
3     <!-- Reviewed: no -->
4 <sect1 id="zend.codegenerator.introduction">
5     <title>Introducción</title>
7     <para>
8         <classname>Zend_CodeGenerator</classname>
9         ofrece facilidades para
10         generar código arbitrario usando una interfaz orientada a objetos,
11         tanto
12         para crear código nuevo como para actualizar código existente.
13         Mientras que la
14         implementación actual se limita a generar código
15         <acronym>PHP</acronym>
16         ,
17         usted fácilmente puede extender la clase base a fin de proveer
18         generación de código para
19         otras tareas como: JavaScript, archivos de
20         configuración, apache vhost, etc.
21     </para>
23     <sect2 id="zend.codegenerator.introduction.theory">
24         <title>Teoría de Operación</title>
26         <para>
27             En el caso de uso más típico, simplemente instanciará una clase de
28             generación de código y
29             podrá pasarle tanto la configuración adecuada
30             o configurarla después de la instanciación.
31             Para generar el código,
32             simplemente haga "echo" del objeto o llame a su método
33             <methodname>generate()</methodname>
34             .
35         </para>
37         <programlisting language="php"><![CDATA[
38 // Pasando la configuración al constructor:
39 $file = new Zend_CodeGenerator_Php_File(array(
40     'classes' => array(
41         new Zend_CodeGenerator_Php_Class(array(
42             'name'    => 'World',
43             'methods' => array(
44                 new Zend_CodeGenerator_Php_Method(array(
45                     'name' => 'hello',
46                     'body' => 'echo \'Hello world!\';',
47                 )),
48             ),
49         )),
50     )
51 ));
53 // Configurando después de la instanciación
54 $method = new Zend_CodeGenerator_Php_Method();
55 $method->setName('hello')
56        ->setBody('echo \'Hello world!\';');
58 $class = new Zend_CodeGenerator_Php_Class();
59 $class->setName('World')
60       ->setMethod($method);
62 $file = new Zend_CodeGenerator_Php_File();
63 $file->setClass($class);
65 // Mostrar el archivo generado
66 echo $file;
68 // o grabarlo a un archivo:
69 file_put_contents('World.php', $file->generate());
70 ]]></programlisting>
72         <para>
73             Ambos ejemplos anteriores mostrarán el mismo resultado:
74        </para>
76         <programlisting language="php"><![CDATA[
77 <?php
79 class World
82     public function hello()
83     {
84         echo 'Hello world!';
85     }
88 ]]></programlisting>
90         <para>
91             Otro caso de uso común es actualizar el código actual -- por ejemplo,
92             para añadir un
93             método a una clase. En ese caso, primero debe
94             inspeccionar el código actual utilizando
95             reflexión, y entonces
96             añadir su nuevo método.
97             <classname>Zend_CodeGenerator</classname>
98             lo hace trivialmente simple,
99             aprovechando
100             <link linkend="zend.reflection">Zend_Reflection</link>
101             .
102         </para>
104         <para>
105             Como ejemplo, digamos que hemos grabado lo anterior al archivo
106             "
107             <filename>World.php</filename>
108             ", y que ya está incluído. Podríamos entonces hacer lo
109             siguiente:
110         </para>
112         <programlisting language="php"><![CDATA[
113 $class = Zend_CodeGenerator_Php_Class::fromReflection(
114     new Zend_Reflection_Class('World')
117 $method = new Zend_CodeGenerator_Php_Method();
118 $method->setName('mrMcFeeley')
119        ->setBody('echo \'Hello, Mr. McFeeley!\';');
120 $class->setMethod($method);
122 $file = new Zend_CodeGenerator_Php_File();
123 $file->setClass($class);
125 // Mostrar el archivo generado
126 echo $file;
128 // O mejor aún, volver a grabarlo al archivo original:
129 file_put_contents('World.php', $file->generate());
130 ]]></programlisting>
132         <para>
133             El archivo de la clase resultante se vería así:
134        </para>
136         <programlisting language="php"><![CDATA[
137 <?php
139 class World
142     public function hello()
143     {
144         echo 'Hello world!';
145     }
147     public function mrMcFeeley()
148     {
149         echo 'Hellow Mr. McFeeley!';
150     }
153 ]]></programlisting>
154     </sect2>
155 </sect1>