Zend_CodeGenerator-Reference.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.codegenerator.reference">
  5. <title>Referencias de Zend_CodeGenerator</title>
  6. <sect2 id="zend.codegenerator.reference.abstracts">
  7. <title>Clases Abstractas e Interfaces</title>
  8. <sect3 id="zend.codegenerator.reference.abstracts.abstract">
  9. <title>Zend_CodeGenerator_Abstract</title>
  10. <para>
  11. La clase base desde la cual heredan todos las clases
  12. CodeGenerator proporciona la funcionalidad mínima necesaria.
  13. Su API es la siguiente:
  14. </para>
  15. <programlisting role="php"><![CDATA[
  16. abstract class Zend_CodeGenerator_Abstract
  17. {
  18. final public function __construct(Array $options = array())
  19. public function setOptions(Array $options)
  20. public function setSourceContent($sourceContent)
  21. public function getSourceContent()
  22. protected function _init()
  23. protected function _prepare()
  24. abstract public function generate();
  25. final public function __toString()
  26. }
  27. ]]></programlisting>
  28. <para>
  29. El constructor primero llama a <code>_init()</code>
  30. (que se deja vacía para implementar extenciones a clases
  31. concretas), se pasa entonces el parámetro <code>$options</code>
  32. a <code>setOptions()</code>, y finalmente se llama a
  33. <code>_prepare()</code> (nuevamente, a ser implementada por
  34. extensión de una clase)
  35. </para>
  36. <para>
  37. Al igual que la mayoría de las clases en Zend Framework,
  38. <code>setOptions()</code> compara una opción clave con setters
  39. existentes en la clase, y pasa el valor de ese método
  40. si lo encuentra.
  41. </para>
  42. <para>
  43. <code>__toString()</code> es marcado como final, y proxies a
  44. <code>generate()</code>.
  45. </para>
  46. <para>
  47. <code>setSourceContent()</code> y
  48. <code>getSourceContent()</code> están destinados ya sea para
  49. fijar el valor por defecto del contenido para el código a ser
  50. generado, o para sustituir dicho contenido una vez que se
  51. completen todas las tareas de generación.
  52. </para>
  53. </sect3>
  54. <sect3 id="zend.codegenerator.reference.abstracts.php-abstract">
  55. <title>Zend_CodeGenerator_Php_Abstract</title>
  56. <para>
  57. <classname>Zend_CodeGenerator_Php_Abstract</classname> extiende
  58. <classname>Zend_CodeGenerator_Abstract</classname>, y añade
  59. algunas propiedades para localizar su contenido si es que ha
  60. cambiado, así como el nivel de identación que debe aparecer
  61. antes del contenido generado. Su API es la siguiente:
  62. </para>
  63. <programlisting role="php"><![CDATA[
  64. abstract class Zend_CodeGenerator_Php_Abstract
  65. extends Zend_CodeGenerator_Abstract
  66. {
  67. public function setSourceDirty($isSourceDirty = true)
  68. public function isSourceDirty()
  69. public function setIndentation($indentation)
  70. public function getIndentation()
  71. }
  72. ]]></programlisting>
  73. </sect3>
  74. <sect3 id="zend.codegenerator.reference.abstracts.php-member-abstract">
  75. <title>Zend_CodeGenerator_Php_Member_Abstract</title>
  76. <para>
  77. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>
  78. es una clase base para generar los miembros de clase --
  79. propiedades y métodos -- y brinda accesos y mutadores para
  80. establecer visibilidad; ya sea el miembro abstracto o no,
  81. estático o definitivo; y el nombre del miembro.
  82. Su API es la siguiente:
  83. </para>
  84. <programlisting role="php"><![CDATA[
  85. abstract class Zend_CodeGenerator_Php_Member_Abstract
  86. extends Zend_CodeGenerator_Php_Abstract
  87. {
  88. public function setAbstract($isAbstract)
  89. public function isAbstract()
  90. public function setStatic($isStatic)
  91. public function isStatic()
  92. public function setVisibility($visibility)
  93. public function getVisibility()
  94. public function setName($name)
  95. public function getName()
  96. }
  97. ]]></programlisting>
  98. </sect3>
  99. </sect2>
  100. <sect2 id="zend.codegenerator.reference.concrete">
  101. <title>Clases Concretas de CodeGenerator</title>
  102. <sect3 id="zend.codegenerator.reference.concrete.php-body">
  103. <title>Zend_CodeGenerator_Php_Body</title>
  104. <para>
  105. <classname>Zend_CodeGenerator_Php_Body</classname> se destina
  106. para generar código procedural arbitrario para incluir dentro
  107. de un archivo. Como tal, usted simplemente establece contenidos
  108. para el objeto, y éste devolverá el contenido cuando usted
  109. invoque a <code>generate()</code>.
  110. </para>
  111. <para>
  112. La API de la clase es la siguiente:
  113. </para>
  114. <programlisting role="php"><![CDATA[
  115. class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
  116. {
  117. public function setContent($content)
  118. public function getContent()
  119. public function generate()
  120. }
  121. ]]></programlisting>
  122. </sect3>
  123. <sect3 id="zend.codegenerator.reference.concrete.php-class">
  124. <title>Zend_CodeGenerator_Php_Class</title>
  125. <para>
  126. <classname>Zend_CodeGenerator_Php_Class</classname> Está
  127. destinado a generar clases PHP. La funcionalidad básica sólo
  128. genera la clase PHP en si misma, así como opcionalmente el PHP
  129. DocBlock. Las clases pueden implementarse o heredarse de otras
  130. clases, y pueden ser marcadas como abstractas.
  131. Utilizando otras clases generadoras de código, también puede
  132. agregar constantes de clase, propiedades y métodos.
  133. </para>
  134. <para>
  135. La API de la clase es la siguiente:
  136. </para>
  137. <programlisting role="php"><![CDATA[
  138. class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
  139. {
  140. public static function fromReflection(
  141. Zend_Reflection_Class $reflectionClass
  142. )
  143. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  144. public function getDocblock()
  145. public function setName($name)
  146. public function getName()
  147. public function setAbstract($isAbstract)
  148. public function isAbstract()
  149. public function setExtendedClass($extendedClass)
  150. public function getExtendedClass()
  151. public function setImplementedInterfaces(Array $implementedInterfaces)
  152. public function getImplementedInterfaces()
  153. public function setProperties(Array $properties)
  154. public function setProperty($property)
  155. public function getProperties()
  156. public function getProperty($propertyName)
  157. public function setMethods(Array $methods)
  158. public function setMethod($method)
  159. public function getMethods()
  160. public function getMethod($methodName)
  161. public function hasMethod($methodName)
  162. public function isSourceDirty()
  163. public function generate()
  164. }
  165. ]]></programlisting>
  166. <para>
  167. El método <code>setProperty()</code> acepta un array de
  168. información que puede ser utilizada para generar una instancia
  169. <classname>Zend_CodeGenerator_Php_Property</classname> -- o
  170. simplemente una instancia de
  171. <classname>Zend_CodeGenerator_Php_Property</classname>.
  172. Análogamente, <code>setMethod()</code> acepta o un array de
  173. información para generar una instancia de
  174. <classname>Zend_CodeGenerator_Php_Method</classname> o una
  175. instancia concreta de esa clase.
  176. </para>
  177. <para>
  178. Se debe observar que <code>setDocBlock()</code> espera una
  179. instancia de
  180. <classname>Zend_CodeGenerator_Php_DocBlock</classname>.
  181. </para>
  182. </sect3>
  183. <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
  184. <title>Zend_CodeGenerator_Php_Docblock</title>
  185. <para>
  186. <classname>Zend_CodeGenerator_Php_Docblock</classname> puede
  187. ser utilizada para generar PHP docblocks arbitrarios,
  188. incluidas todas las características estándar de docblock:
  189. descripciones cortas y largas y además los tags de anotaciones.
  190. </para>
  191. <para>
  192. Los tags de anotación pueden establecerse utilizando los métodos
  193. <code>setTag()</code> y <code>setTags()</code>; cada una de
  194. estas toman o un array describiendo el tag que puede ser pasado
  195. al constructor
  196. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname>, o
  197. una instancia de esa clase.
  198. </para>
  199. <para>
  200. La API de la clase es la siguiente:
  201. </para>
  202. <programlisting role="php"><![CDATA[
  203. class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
  204. {
  205. public static function fromReflection(
  206. Zend_Reflection_Docblock $reflectionDocblock
  207. )
  208. public function setShortDescription($shortDescription)
  209. public function getShortDescription()
  210. public function setLongDescription($longDescription)
  211. public function getLongDescription()
  212. public function setTags(Array $tags)
  213. public function setTag($tag)
  214. public function getTags()
  215. public function generate()
  216. }
  217. ]]></programlisting>
  218. </sect3>
  219. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
  220. <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
  221. <para>
  222. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> está
  223. destinado a crear tags de anotaciones arbitrarias
  224. para su inclusión en PHP docblocks.
  225. Se espera que los tags (etiquetas) contengan un nombre
  226. (la porción que sigue inmediatamente después del símbolo '@')
  227. y una descripción (todo lo que sigue después del nombre del
  228. tag).
  229. </para>
  230. <para>
  231. La API de la clase es la siguiente:
  232. </para>
  233. <programlisting role="php"><![CDATA[
  234. class Zend_CodeGenerator_Php_Docblock_Tag
  235. extends Zend_CodeGenerator_Php_Abstract
  236. {
  237. public static function fromReflection(
  238. Zend_Reflection_Docblock_Tag $reflectionTag
  239. )
  240. public function setName($name)
  241. public function getName()
  242. public function setDescription($description)
  243. public function getDescription()
  244. public function generate()
  245. }
  246. ]]></programlisting>
  247. </sect3>
  248. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
  249. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
  250. <para>
  251. <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname>
  252. es una versión especializada de
  253. <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname>,
  254. y representa un parámetro del método.
  255. El nombre del tag es por lo tanto ("param"), pero debido
  256. al formato de este tag de anotación, es necesaria información
  257. adicional a fin de generarla: el nombre del parámetro y el tipo
  258. de datos que representa.
  259. </para>
  260. <para>
  261. La API de la clase es la siguiente:
  262. </para>
  263. <programlisting role="php"><![CDATA[
  264. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  265. extends Zend_CodeGenerator_Php_Docblock_Tag
  266. {
  267. public static function fromReflection(
  268. Zend_Reflection_Docblock_Tag $reflectionTagParam
  269. )
  270. public function setDatatype($datatype)
  271. public function getDatatype()
  272. public function setParamName($paramName)
  273. public function getParamName()
  274. public function generate()
  275. }
  276. ]]></programlisting>
  277. </sect3>
  278. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
  279. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
  280. <para>
  281. Al igual la variante del tag docblock,
  282. <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname>
  283. es una variante de un tag de anotación para representar el
  284. valor de retorno del método. En este caso, el nombre del tag de
  285. anotación es conocido ("return"), pero requiere un tipo de
  286. retorno.
  287. </para>
  288. <para>
  289. La API de la clase es la siguiente:
  290. </para>
  291. <programlisting role="php"><![CDATA[
  292. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  293. extends Zend_CodeGenerator_Php_Docblock_Tag
  294. {
  295. public static function fromReflection(
  296. Zend_Reflection_Docblock_Tag $reflectionTagReturn
  297. )
  298. public function setDatatype($datatype)
  299. public function getDatatype()
  300. public function generate()
  301. }
  302. ]]></programlisting>
  303. </sect3>
  304. <sect3 id="zend.codegenerator.reference.concrete.php-file">
  305. <title>Zend_CodeGenerator_Php_File</title>
  306. <para>
  307. <classname>Zend_CodeGenerator_Php_File</classname> se utiliza
  308. para generar el contenido íntegro de un archivo que contiene
  309. código PHP. El archivo puede contener clases o código PHP
  310. arbitrario, así como un archivo de nivel docblock si así lo
  311. desea.
  312. </para>
  313. <para>
  314. Cuando se agregan clases al archivo, necesitará pasar o un
  315. array de información para pasar al constructor
  316. <classname>Zend_CodeGenerator_Php_Class</classname>, o una
  317. instancia de esa clase. De manera similar, con docblocks,
  318. usted tendrá que pasar información para que lo consuma
  319. el constructor
  320. <classname>Zend_CodeGenerator_Php_Docblock</classname>
  321. o una instancia de la clase.
  322. </para>
  323. <para>
  324. La API de la clase es la siguiente:
  325. </para>
  326. <programlisting role="php"><![CDATA[
  327. class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
  328. {
  329. public static function fromReflectedFilePath(
  330. $filePath,
  331. $usePreviousCodeGeneratorIfItExists = true,
  332. $includeIfNotAlreadyIncluded = true)
  333. public static function fromReflection(Zend_Reflection_File $reflectionFile)
  334. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  335. public function getDocblock()
  336. public function setRequiredFiles($requiredFiles)
  337. public function getRequiredFiles()
  338. public function setClasses(Array $classes)
  339. public function getClass($name = null)
  340. public function setClass($class)
  341. public function setFilename($filename)
  342. public function getFilename()
  343. public function getClasses()
  344. public function setBody($body)
  345. public function getBody()
  346. public function isSourceDirty()
  347. public function generate()
  348. }
  349. ]]></programlisting>
  350. </sect3>
  351. <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
  352. <title>Zend_CodeGenerator_Php_Member_Container</title>
  353. <para>
  354. <classname>Zend_CodeGenerator_Php_Member_Container</classname>
  355. es usado internamente por
  356. <classname>Zend_CodeGenerator_Php_Class</classname>
  357. para seguir la pista de los los miembros de la clase --
  358. a propiedades y métodos por igual. Estos están indexados por
  359. nombre, utilizando las instancias concretas de los miembros
  360. como valores.
  361. </para>
  362. <para>
  363. La API de la clase es la siguiente:
  364. </para>
  365. <programlisting role="php"><![CDATA[
  366. class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
  367. {
  368. public function __construct($type = self::TYPE_PROPERTY)
  369. }
  370. ]]></programlisting>
  371. </sect3>
  372. <sect3 id="zend.codegenerator.reference.concrete.php-method">
  373. <title>Zend_CodeGenerator_Php_Method</title>
  374. <para>
  375. <classname>Zend_CodeGenerator_Php_Method</classname> describe
  376. un método de clase, y puede generar tanto el código y el
  377. docblock para el método. La visibilidad y condición estática,
  378. abstracta, o se puede indicar como final, por su clase padre,
  379. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>.
  380. Finalmente, pueden especificarse los parámetros y valor de
  381. retorno para el método.
  382. </para>
  383. <para>
  384. Pueden establecerse los parámetros usando
  385. <code>setParameter()</code> o <code>setParameters()</code>.
  386. En cada caso, un parámetro debe ser un array de información
  387. para pasar al constructor
  388. <classname>Zend_CodeGenerator_Php_Parameter</classname> o una
  389. instancia de esa clase.
  390. </para>
  391. <para>
  392. La API de la clase es la siguiente:
  393. </para>
  394. <programlisting role="php"><![CDATA[
  395. class Zend_CodeGenerator_Php_Method
  396. extends Zend_CodeGenerator_Php_Member_Abstract
  397. {
  398. public static function fromReflection(
  399. Zend_Reflection_Method $reflectionMethod
  400. )
  401. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  402. public function getDocblock()
  403. public function setFinal($isFinal)
  404. public function setParameters(Array $parameters)
  405. public function setParameter($parameter)
  406. public function getParameters()
  407. public function setBody($body)
  408. public function getBody()
  409. public function generate()
  410. }
  411. ]]></programlisting>
  412. </sect3>
  413. <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
  414. <title>Zend_CodeGenerator_Php_Parameter</title>
  415. <para>
  416. <classname>Zend_CodeGenerator_Php_Parameter</classname>
  417. puede ser utilizada para especificar parámetros del método.
  418. Cada parámetro puede tener una posición (si no están
  419. especificados, se usarán en el orden que estén registrados en
  420. el método), son oblogatorios un valor por defecto, un tipo de
  421. datos y un nombre de parámetro.
  422. </para>
  423. <para>
  424. La API de la clase es la siguiente:
  425. </para>
  426. <programlisting role="php"><![CDATA[
  427. class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
  428. {
  429. public static function fromReflection(
  430. Zend_Reflection_Parameter $reflectionParameter
  431. )
  432. public function setType($type)
  433. public function getType()
  434. public function setName($name)
  435. public function getName()
  436. public function setDefaultValue($defaultValue)
  437. public function getDefaultValue()
  438. public function setPosition($position)
  439. public function getPosition()
  440. public function generate()
  441. }
  442. ]]></programlisting>
  443. </sect3>
  444. <sect3 id="zend.codegenerator.reference.concrete.php-property">
  445. <title>Zend_CodeGenerator_Php_Property</title>
  446. <para>
  447. <classname>Zend_CodeGenerator_Php_Property</classname> describe
  448. una propiedad de clase, que puede ser tanto una constante o una
  449. variable. En cada caso, la propiedad puede tener un valor
  450. predeterminado asociado con ella. Además, la visibilidad de
  451. las propiedades de la variable puede ser establecida por la
  452. clase padre,
  453. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>.
  454. </para>
  455. <para>
  456. La API de la clase es la siguiente:
  457. </para>
  458. <programlisting role="php"><![CDATA[
  459. class Zend_CodeGenerator_Php_Property
  460. extends Zend_CodeGenerator_Php_Member_Abstract
  461. {
  462. public static function fromReflection(
  463. Zend_Reflection_Property $reflectionProperty
  464. )
  465. public function setConst($const)
  466. public function isConst()
  467. public function setDefaultValue($defaultValue)
  468. public function getDefaultValue()
  469. public function generate()
  470. }
  471. ]]></programlisting>
  472. </sect3>
  473. </sect2>
  474. </sect1>