Zend_CodeGenerator-Reference.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.codegenerator.reference">
  5. <title>Zend_CodeGenerator Referenz</title>
  6. <sect2 id="zend.codegenerator.reference.abstracts">
  7. <title>Abstrakte Klassen und Interfaces</title>
  8. <sect3 id="zend.codegenerator.reference.abstracts.abstract">
  9. <title>Zend_CodeGenerator_Abstract</title>
  10. <para>
  11. Die Basisklasse von der alle CodeGenerator Klassen abgeleitet sind und die
  12. minimal notwendige Funktionalität anbietet. Dessen API ist wie folgt:
  13. </para>
  14. <programlisting language="php"><![CDATA[
  15. abstract class Zend_CodeGenerator_Abstract
  16. {
  17. final public function __construct(Array $options = array())
  18. public function setOptions(Array $options)
  19. public function setSourceContent($sourceContent)
  20. public function getSourceContent()
  21. protected function _init()
  22. protected function _prepare()
  23. abstract public function generate();
  24. final public function __toString()
  25. }
  26. ]]></programlisting>
  27. <para>
  28. Der Constructor ruft zuerst <code>_init()</code> auf (welches für eine konkrete
  29. erweiterte Klasse für die Implementation leer gelassen ist), übergibt dann
  30. den <code>$options</code> Parameter an <code>setOptions()</code> und ruft
  31. zuletzt <code>_prepare()</code> auf (welches auch von der erweiternden Klasse
  32. implementiert werden muß).
  33. </para>
  34. <para>
  35. Wie die meisten Klassen im Zend Framework, vergleicht <code>setOptions()</code>
  36. den Schlüssel einer Option mit den in der Klasse existierenden Settern, und
  37. übergibt den Wert an die gefundene Methode.
  38. </para>
  39. <para>
  40. <code>__toString()</code> ist als final markiert, und leitet auf
  41. <code>generate()</code> weiter.
  42. </para>
  43. <para>
  44. <code>setSourceContent()</code> und <code>getSourceContent()</code> sind dazu
  45. vergesehen entweder den Standardinhalt für den zu erzeugenden Code zu setzen,
  46. oder um gesetzte Inhalte zu ersetzen sobald alle Arbeiten der Erzeugung
  47. beendet wurden.
  48. </para>
  49. </sect3>
  50. <sect3 id="zend.codegenerator.reference.abstracts.php-abstract">
  51. <title>Zend_CodeGenerator_Php_Abstract</title>
  52. <para>
  53. <classname>Zend_CodeGenerator_Php_Abstract</classname> erweitert
  54. <classname>Zend_CodeGenerator_Abstract</classname>, und fügt einige Eigenschaften
  55. hinzu für das Verfolgen ob Inhalte geändert wurden sowie der Anzahl an Einrückungen
  56. die vorhanden sein sollten bevor Inhalte erzeugt werden. Die API ist wie folgt:
  57. </para>
  58. <programlisting language="php"><![CDATA[
  59. abstract class Zend_CodeGenerator_Php_Abstract
  60. extends Zend_CodeGenerator_Abstract
  61. {
  62. public function setSourceDirty($isSourceDirty = true)
  63. public function isSourceDirty()
  64. public function setIndentation($indentation)
  65. public function getIndentation()
  66. }
  67. ]]></programlisting>
  68. </sect3>
  69. <sect3 id="zend.codegenerator.reference.abstracts.php-member-abstract">
  70. <title>Zend_CodeGenerator_Php_Member_Abstract</title>
  71. <para>
  72. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> ist eine Basisklasse
  73. für die Erstellung von Klassen-Member -- Eigenschaften und Methoden -- und bietet
  74. Zugriffs- und Änderungsmethoden für die Ausführung der Sichtbarkeit; ob ein
  75. Member Abstrakt, Statisch, oder Final ist; und der Name des Members. Die API ist
  76. wie folgt:
  77. </para>
  78. <programlisting language="php"><![CDATA[
  79. abstract class Zend_CodeGenerator_Php_Member_Abstract
  80. extends Zend_CodeGenerator_Php_Abstract
  81. {
  82. public function setAbstract($isAbstract)
  83. public function isAbstract()
  84. public function setStatic($isStatic)
  85. public function isStatic()
  86. public function setVisibility($visibility)
  87. public function getVisibility()
  88. public function setName($name)
  89. public function getName()
  90. }
  91. ]]></programlisting>
  92. </sect3>
  93. </sect2>
  94. <sect2 id="zend.codegenerator.reference.concrete">
  95. <title>Konkrete CodeGenerator Klassen</title>
  96. <sect3 id="zend.codegenerator.reference.concrete.php-body">
  97. <title>Zend_CodeGenerator_Php_Body</title>
  98. <para>
  99. <classname>Zend_CodeGenerator_Php_Body</classname> ist dazu gedacht generellen
  100. prozeduralen Code in einer Datei einzufügen. Als solches kann man einfach den Inhalt
  101. für das Objekt setzen, und es wird den Inhalt zurückgeben wenn man
  102. <code>generate()</code> aufruft.
  103. </para>
  104. <para>
  105. Die API der Klasse ist wie folgt:
  106. </para>
  107. <programlisting language="php"><![CDATA[
  108. class Zend_CodeGenerator_Php_Body extends Zend_CodeGenerator_Php_Abstract
  109. {
  110. public function setContent($content)
  111. public function getContent()
  112. public function generate()
  113. }
  114. ]]></programlisting>
  115. </sect3>
  116. <sect3 id="zend.codegenerator.reference.concrete.php-class">
  117. <title>Zend_CodeGenerator_Php_Class</title>
  118. <para>
  119. <classname>Zend_CodeGenerator_Php_Class</classname> ist für die Erstellung von PHP
  120. Klassen gedacht. Die Basisfunktionalität ist nur die Erstellung der PHP Klasse
  121. selbst, sowie optional den betreffenden PHP DocBlock. Klassen können von anderen
  122. Klassen abgeleitet sein, oder diese Implementieren, und können als Abstrakt markiert
  123. sein. Bei Verwendung von anderen CodeGenerator Klassen kann man auch
  124. Klassenkonstanten, Eigenschaften und Methoden hinzufügen.
  125. </para>
  126. <para>
  127. Die API ist wie folgt:
  128. </para>
  129. <programlisting language="php"><![CDATA[
  130. class Zend_CodeGenerator_Php_Class extends Zend_CodeGenerator_Php_Abstract
  131. {
  132. public static function fromReflection(
  133. Zend_Reflection_Class $reflectionClass
  134. )
  135. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  136. public function getDocblock()
  137. public function setName($name)
  138. public function getName()
  139. public function setAbstract($isAbstract)
  140. public function isAbstract()
  141. public function setExtendedClass($extendedClass)
  142. public function getExtendedClass()
  143. public function setImplementedInterfaces(Array $implementedInterfaces)
  144. public function getImplementedInterfaces()
  145. public function setProperties(Array $properties)
  146. public function setProperty($property)
  147. public function getProperties()
  148. public function getProperty($propertyName)
  149. public function setMethods(Array $methods)
  150. public function setMethod($method)
  151. public function getMethods()
  152. public function getMethod($methodName)
  153. public function hasMethod($methodName)
  154. public function isSourceDirty()
  155. public function generate()
  156. }
  157. ]]></programlisting>
  158. <para>
  159. Die <code>setProperty()</code> Methode akzeptiert ein Array von Informationen,
  160. die verwendet werden können um eine Instanz von
  161. <classname>Zend_CodeGenerator_Php_Property</classname> zu erstellen -- oder einfach
  162. eine Instanz von <classname>Zend_CodeGenerator_Php_Property</classname> selbst.
  163. Genauso akzeptiert <code>setMethod()</code> entweder ein Array von Information für
  164. die Erstellung einer <classname>Zend_CodeGenerator_Php_Method</classname> Instanz
  165. oder eine konkrete Instanz dieser Klasse.
  166. </para>
  167. <para>
  168. Beachte das <code>setDocBlock()</code> eine Instanz von
  169. <classname>Zend_CodeGenerator_Php_DocBlock</classname> erwartet.
  170. </para>
  171. </sect3>
  172. <sect3 id="zend.codegenerator.reference.concrete.php-docblock">
  173. <title>Zend_CodeGenerator_Php_Docblock</title>
  174. <para>
  175. <classname>Zend_CodeGenerator_Php_Docblock</classname> kann verwendet werden um PHP
  176. DocBlocks zu erstellen, inklusive aller standardmäßigen DocBlock Features: Kurz- und
  177. Langbeschreibung sowie zusätzliche Tags.
  178. </para>
  179. <para>
  180. Zusätzliche Tags können durch Verwendung der <code>setTag()</code> und
  181. <code>setTags()</code> Methoden gesetzt werden; diese nehmen entweder ein Array an
  182. das das Tag beschreibt das an den
  183. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> Contructor übergeben
  184. wird, oder eine Instanz dieser Klasse selbst.
  185. </para>
  186. <para>
  187. Die API ist wie folgt:
  188. </para>
  189. <programlisting language="php"><![CDATA[
  190. class Zend_CodeGenerator_Php_Docblock extends Zend_CodeGenerator_Php_Abstract
  191. {
  192. public static function fromReflection(
  193. Zend_Reflection_Docblock $reflectionDocblock
  194. )
  195. public function setShortDescription($shortDescription)
  196. public function getShortDescription()
  197. public function setLongDescription($longDescription)
  198. public function getLongDescription()
  199. public function setTags(Array $tags)
  200. public function setTag($tag)
  201. public function getTags()
  202. public function generate()
  203. }
  204. ]]></programlisting>
  205. </sect3>
  206. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag">
  207. <title>Zend_CodeGenerator_Php_Docblock_Tag</title>
  208. <para>
  209. <classname>Zend_CodeGenerator_Php_Docblock_Tag</classname> ist für die Erstellung
  210. von eigenen Tags, zum Einfügen in PHP DocBlocks, gedacht. Von Tags wird erwartet
  211. das Sie einen Namen enthalten (Der Teil der unmittelbar dem '@' Symbol folgt)
  212. und eine Beschreibung (alles das dem Tag Namen folgt).
  213. </para>
  214. <para>
  215. Die API der Klasse ist wie folgt:
  216. </para>
  217. <programlisting language="php"><![CDATA[
  218. class Zend_CodeGenerator_Php_Docblock_Tag
  219. extends Zend_CodeGenerator_Php_Abstract
  220. {
  221. public static function fromReflection(
  222. Zend_Reflection_Docblock_Tag $reflectionTag
  223. )
  224. public function setName($name)
  225. public function getName()
  226. public function setDescription($description)
  227. public function getDescription()
  228. public function generate()
  229. }
  230. ]]></programlisting>
  231. </sect3>
  232. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-param">
  233. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Param</title>
  234. <para>
  235. <classname>Zend_CodeGenerator_Php_DocBlock_Tag_Param</classname> ist eine spezielle
  236. Version von <classname>Zend_CodeGenerator_Php_DocBlock_Tag</classname>, und
  237. repräsentiert einen Parameter einer Methode. Das TagName ist hierbei bekannt
  238. ("param"), aber durch die Form des Tags, werden zusätzliche Informationen benötigt
  239. um Ihn zu erzeugen: den Namen des Parameter und den Datentyp den dieser
  240. repräsentiert.
  241. </para>
  242. <para>
  243. Die API dieser Klasse ist wie folgt:
  244. </para>
  245. <programlisting language="php"><![CDATA[
  246. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  247. extends Zend_CodeGenerator_Php_Docblock_Tag
  248. {
  249. public static function fromReflection(
  250. Zend_Reflection_Docblock_Tag $reflectionTagParam
  251. )
  252. public function setDatatype($datatype)
  253. public function getDatatype()
  254. public function setParamName($paramName)
  255. public function getParamName()
  256. public function generate()
  257. }
  258. ]]></programlisting>
  259. </sect3>
  260. <sect3 id="zend.codegenerator.reference.concrete.php-docblock-tag-return">
  261. <title>Zend_CodeGenerator_Php_DocBlock_Tag_Return</title>
  262. <para>
  263. Wie die Variante des Param DocBlock Tags ist
  264. <classname>Zend_CodeGenerator_Php_Docblock_Tab_Return</classname> eine Variante
  265. eines Tags für die Darstellung eines Rückgabewerts einer Methode. In diesem Fall ist
  266. der Name des Tags bekannt ("return"), aber es benötigt einen Rückgabetyp.
  267. </para>
  268. <para>
  269. Die API der Klasse ist wie folgt:
  270. </para>
  271. <programlisting language="php"><![CDATA[
  272. class Zend_CodeGenerator_Php_Docblock_Tag_Param
  273. extends Zend_CodeGenerator_Php_Docblock_Tag
  274. {
  275. public static function fromReflection(
  276. Zend_Reflection_Docblock_Tag $reflectionTagReturn
  277. )
  278. public function setDatatype($datatype)
  279. public function getDatatype()
  280. public function generate()
  281. }
  282. ]]></programlisting>
  283. </sect3>
  284. <sect3 id="zend.codegenerator.reference.concrete.php-file">
  285. <title>Zend_CodeGenerator_Php_File</title>
  286. <para>
  287. <classname>Zend_CodeGenerator_Php_File</classname> wird verwendet um den kompletten
  288. Inhalt einer Datei zu erstellen die PHP Code enthalten wird. Die Datei kann Klassen
  289. oder eigenen PHP Code enthalten, und wenn gewünscht einen Datei-Level Docblock.
  290. </para>
  291. <para>
  292. Wenn der Datei Klassen hinzugefügt werden, muß man entweder ein Array von
  293. Informationen übergeben die an den Constructor von
  294. <classname>Zend_CodeGenerator_Php_Class</classname> übergeben werden, oder eine
  295. Instanz dieser Klasse. Genau wie bei den DocBlocks, muß man Informationen für den
  296. Constructor von <classname>Zend_CodeGenerator_Php_Docblock</classname> übergeben die
  297. verwendet werden, oder eine Instanz dieser Klasse.
  298. </para>
  299. <para>
  300. Die API der Klasse ist wie folgt:
  301. </para>
  302. <programlisting language="php"><![CDATA[
  303. class Zend_CodeGenerator_Php_File extends Zend_CodeGenerator_Php_Abstract
  304. {
  305. public static function fromReflectedFilePath(
  306. $filePath,
  307. $usePreviousCodeGeneratorIfItExists = true,
  308. $includeIfNotAlreadyIncluded = true)
  309. public static function fromReflection(Zend_Reflection_File $reflectionFile)
  310. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  311. public function getDocblock()
  312. public function setRequiredFiles($requiredFiles)
  313. public function getRequiredFiles()
  314. public function setClasses(Array $classes)
  315. public function getClass($name = null)
  316. public function setClass($class)
  317. public function setFilename($filename)
  318. public function getFilename()
  319. public function getClasses()
  320. public function setBody($body)
  321. public function getBody()
  322. public function isSourceDirty()
  323. public function generate()
  324. }
  325. ]]></programlisting>
  326. </sect3>
  327. <sect3 id="zend.codegenerator.reference.concrete.php-member-container">
  328. <title>Zend_CodeGenerator_Php_Member_Container</title>
  329. <para>
  330. <classname>Zend_CodeGenerator_Php_Member_Container</classname> wird intern von
  331. <classname>Zend_CodeGenerator_Php_Class</classname> verwendet um die Klassenmember
  332. zu erheben -- Eigenschaften sowie Methoden. Diese werden durch den Namen indiziert,
  333. indem die konkrete Instanz des Members als Wert verwendet wird.
  334. </para>
  335. <para>
  336. Die API der Klasse ist wie folgt:
  337. </para>
  338. <programlisting language="php"><![CDATA[
  339. class Zend_CodeGenerator_Php_Member_Container extends ArrayObject
  340. {
  341. public function __construct($type = self::TYPE_PROPERTY)
  342. }
  343. ]]></programlisting>
  344. </sect3>
  345. <sect3 id="zend.codegenerator.reference.concrete.php-method">
  346. <title>Zend_CodeGenerator_Php_Method</title>
  347. <para>
  348. <classname>Zend_CodeGenerator_Php_Method</classname> beschreibt eine Klassenmethode,
  349. und kann sowohl Code als auch den DocBlock für diese Methode erstellen. Die
  350. Sichtbarkeit und der Status als Statisch, Abstrakt, oder Final kann, über die
  351. Eltern-Klasse, <classname>Zend_CodeGenerator_Php_Member_Abstract</classname>,
  352. angegeben werden. Letztendlich können die Parameter und Rückgabewerte für die
  353. Methode spezifiziert werden.
  354. </para>
  355. <para>
  356. Parameter könnnen durch Verwendung von <code>setParameter()</code> oder
  357. <code>setParameters()</code> gesetzt werden. In jedem Fall, sollte der Parameter
  358. entweder ein Array von Informationen sein die an den Constructor von
  359. <classname>Zend_CodeGenerator_Php_Parameter</classname> übergeben werden, oder eine
  360. Instanz dieser Klasse.
  361. </para>
  362. <para>
  363. Die API der Klasse ist wie folgt:
  364. </para>
  365. <programlisting language="php"><![CDATA[
  366. class Zend_CodeGenerator_Php_Method
  367. extends Zend_CodeGenerator_Php_Member_Abstract
  368. {
  369. public static function fromReflection(
  370. Zend_Reflection_Method $reflectionMethod
  371. )
  372. public function setDocblock(Zend_CodeGenerator_Php_Docblock $docblock)
  373. public function getDocblock()
  374. public function setFinal($isFinal)
  375. public function setParameters(Array $parameters)
  376. public function setParameter($parameter)
  377. public function getParameters()
  378. public function setBody($body)
  379. public function getBody()
  380. public function generate()
  381. }
  382. ]]></programlisting>
  383. </sect3>
  384. <sect3 id="zend.codegenerator.reference.concrete.php-parameter">
  385. <title>Zend_CodeGenerator_Php_Parameter</title>
  386. <para>
  387. <classname>Zend_CodeGenerator_Php_Parameter</classname> kann verwendet werden um
  388. Methodenparameter zu spezifizieren. Jeder Parameter kann eine Position haben
  389. (wenn nicht spezifiziert wird die Reihenfolge in der diese spezifiziert werden
  390. verwendet), einen Standardwert, und einen Datentyp; ein Parametername wird
  391. benötigt.
  392. </para>
  393. <para>
  394. Die API der Klasse ist wie folgt:
  395. </para>
  396. <programlisting language="php"><![CDATA[
  397. class Zend_CodeGenerator_Php_Parameter extends Zend_CodeGenerator_Php_Abstract
  398. {
  399. public static function fromReflection(
  400. Zend_Reflection_Parameter $reflectionParameter
  401. )
  402. public function setType($type)
  403. public function getType()
  404. public function setName($name)
  405. public function getName()
  406. public function setDefaultValue($defaultValue)
  407. public function getDefaultValue()
  408. public function setPosition($position)
  409. public function getPosition()
  410. public function generate()
  411. }
  412. ]]></programlisting>
  413. </sect3>
  414. <sect3 id="zend.codegenerator.reference.concrete.php-property">
  415. <title>Zend_CodeGenerator_Php_Property</title>
  416. <para>
  417. <classname>Zend_CodeGenerator_Php_Property</classname> beschreibt die Eigenschaft
  418. einer Klasse, welche entweder eine Konstante oder eine Variable sein kann. In jedem
  419. Fall, kann der Eigenschaft ein optionaler Standardwert assoziiert werden.
  420. Zusätzlich kann die Sichtbarkeit von variablen Eigenschaften über die Elternklasse
  421. <classname>Zend_CodeGenerator_Php_Member_Abstract</classname> gesetzt werden.
  422. </para>
  423. <para>
  424. Die API der Klasse ist wie folgt:
  425. </para>
  426. <programlisting language="php"><![CDATA[
  427. class Zend_CodeGenerator_Php_Property
  428. extends Zend_CodeGenerator_Php_Member_Abstract
  429. {
  430. public static function fromReflection(
  431. Zend_Reflection_Property $reflectionProperty
  432. )
  433. public function setConst($const)
  434. public function isConst()
  435. public function setDefaultValue($defaultValue)
  436. public function getDefaultValue()
  437. public function generate()
  438. }
  439. ]]></programlisting>
  440. </sect3>
  441. </sect2>
  442. </sect1>