Zend_Reflection-Reference.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17132 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.reflection.reference">
  5. <title>Zend_Reflection Referenz</title>
  6. <para>
  7. Die verschiedenen Klassen in <classname>Zend_Reflection</classname> mimen die API von PHP's
  8. <ulink url="http://php.net/reflection">Reflection API</ulink> - mit einem wichtigen
  9. Unterschied. PHP's Reflection API unterstützt die Introspection in die Annotation Tags
  10. von DocBlocks nicht, und auch nicht in die Variablen-Typen von Parametern, oder die
  11. Rückgabe-Typen.
  12. </para>
  13. <para>
  14. <classname>Zend_Reflection</classname> analysiert die DocBlock Anotations von Methoden um die
  15. Variablen-Typen und Rückgabe-Typen von Parametern zu Erkennen. Speziell die Annotations
  16. von <code>@param</code> und <code>@return</code> werden verwendet. Trotzdem kann man auch
  17. auf andere Annotation Tags prüfen, sowie die Standardmäßigen "Kurz"- (short) und
  18. "Lang" (long) Beschreibungen.
  19. </para>
  20. <para>
  21. Jedes Reflection Objekt in <classname>Zend_Reflection</classname> überschreibt die
  22. <code>getDocblock()</code> Methode um eine Instanz von
  23. <classname>Zend_Reflection_Docblock</classname> zurückzugeben. Die Klasse bietet
  24. Introspektion in die DocBlocks und Annotation Tags.
  25. </para>
  26. <para>
  27. <classname>Zend_Reflection_File</classname> ist eine neue Reflection Klasse welche die
  28. Introspektion von PHP Dateien erlaubt. Mit Ihr kann man die Klassen, Funktionen und
  29. globalen PHP Code erhalten der in der Datei enthalten ist.
  30. </para>
  31. <para>
  32. Letztendlich erlauben die verschiedenen Methoden, die andere Reflection Objekte
  33. zurückgeben, einen zweiten Parameter: Den Namen der Reflection Klasse die für das
  34. zurückzugebende Reflection Objekt zu verwenden ist.
  35. </para>
  36. <sect2 id="zend.reflection.reference.docblock">
  37. <title>Zend_Reflection_Docblock</title>
  38. <para>
  39. <classname>Zend_Reflection_Docblock</classname> ist das Herz von
  40. <classname>Zend_Reflection_Docblock</classname> Bonus über PHP's Reflection API. Es
  41. bietet die folgenden Methoden:
  42. </para>
  43. <itemizedlist>
  44. <listitem><para>
  45. <code>getContents()</code>: Gibt den kompletten Inhalt des DocBlocks zurück.
  46. </para></listitem>
  47. <listitem><para>
  48. <code>getStartLine()</code>: Gibt die Startposition des DocBlocks in der
  49. definierten Datei zurück.
  50. </para></listitem>
  51. <listitem><para>
  52. <code>getEndLine()</code>: Gibt die letzte Zeile des DocBlocks in der definierten
  53. Datei zurück.
  54. </para></listitem>
  55. <listitem><para>
  56. <code>getShortDescription()</code>: Gibt die kurze, ein-zeilige Beschreibung zurück
  57. (normalerweise die erste Zeile des DocBlocks).
  58. </para></listitem>
  59. <listitem><para>
  60. <code>getLongDescription()</code>: Gibt die lange Beschreibung des DocBlocks
  61. zurück.
  62. </para></listitem>
  63. <listitem><para>
  64. <code>hasTag($name)</code>: Erkennt ob der DocBlock das angegebene Annotation Tag
  65. besitzt.
  66. </para></listitem>
  67. <listitem><para>
  68. <code>getTag($name)</code>: Empfängt das Reflection Objekt des angegebenen
  69. Annotation Tags, oder ein boolsches <constant>FALSE</constant> wenn es nicht
  70. vorhanden ist.
  71. </para></listitem>
  72. <listitem><para>
  73. <code>getTags($filter)</code>: Gibt alle Tags zurück, oder alle Tags die dem
  74. angegebenen <code>$filter</code> String entsprechen. Die zurückgegebenen Tags
  75. werden ein Array von <code>Zend_Reflection_Docblock_Tag</code> Objekten sein.
  76. </para></listitem>
  77. </itemizedlist>
  78. </sect2>
  79. <sect2 id="zend.reflection.reference.docblock-tag">
  80. <title>Zend_Reflection_Docblock_Tag</title>
  81. <para>
  82. <classname>Zend_Reflection_Docblock_Tag</classname> bietet Reflection für individuelle
  83. Annotation Tags. Die meisten Tags bestehen nur aus einem Namen und einer Beschreibung.
  84. Im Fall einiger spezieller Tags, bietet die Klasse eine Factory Methode um eine
  85. Instanz der entsprechenden Klasse zu erhalten.
  86. </para>
  87. <para>
  88. Die folgenden Methoden sind für <classname>Zend_Reflection_Docblock_Tag</classname>
  89. definiert:
  90. </para>
  91. <itemizedlist>
  92. <listitem><para>
  93. <code>factory($tagDocblockLine)</code>: Instanziert die entsprechende Reflection
  94. Klasse des Tags und gibt diese zurück.
  95. </para></listitem>
  96. <listitem><para>
  97. <code>getName()</code>: Gibt den Namen des Annotation Tags zurück.
  98. </para></listitem>
  99. <listitem><para>
  100. <code>getDescription()</code>: Gibt die Beschreibung des Annotation Tags zurück.
  101. </para></listitem>
  102. </itemizedlist>
  103. </sect2>
  104. <sect2 id="zend.reflection.reference.docblock-tag-param">
  105. <title>Zend_Reflection_Docblock_Tag_Param</title>
  106. <para>
  107. <classname>Zend_Reflection_Docblock_Tag_Param</classname> ist eine spezialisierte
  108. Version von <classname>Zend_Reflection_Docblock_Tag</classname>. Die Beschreibung des
  109. <code>@param</code> Annotation Tags besteht aus dem Typ des Parameters, dem Namen der
  110. Variable und der Beschreibung der Variable. Sie fügt die folgenden Methoden zu
  111. <classname>Zend_Reflection_Docblock_Tag</classname> hinzu:
  112. </para>
  113. <itemizedlist>
  114. <listitem><para>
  115. <code>getType()</code>: Gibt den Variablentyp des Parameters zurück.
  116. </para></listitem>
  117. <listitem><para>
  118. <code>getVariableName()</code>: Gibt den Variablennamen des Parameters zurück.
  119. </para></listitem>
  120. </itemizedlist>
  121. </sect2>
  122. <sect2 id="zend.reflection.reference.docblock-tag-return">
  123. <title>Zend_Reflection_Docblock_Tag_Return</title>
  124. <para>
  125. Wie <classname>Zend_Reflection_Docblock_Tag_Param</classname> ist
  126. <classname>Zend_Reflection_Docblock_Tag_Return</classname> eine spezialisierte Version
  127. von <classname>Zend_Reflection_Docblock_Tag</classname>. Die Beschreibung des
  128. <code>@return</code> Annotation Tags besteht aus dem Rückgabetyp und der Beschreibung
  129. der Variable. Sie fügt die folgende Methode zu
  130. <code>Zend_Reflection_Docblock_Tag</code> hinzu:
  131. </para>
  132. <itemizedlist>
  133. <listitem><para>
  134. <code>getType()</code>: gibt den Rückgabetyp zurück.
  135. </para></listitem>
  136. </itemizedlist>
  137. </sect2>
  138. <sect2 id="zend.reflection.reference.file">
  139. <title>Zend_Reflection_File</title>
  140. <para>
  141. <classname>Zend_Reflection_File</classname> bietet Introspection in PHP Dateien. Mit
  142. Ihr kann man Klassen, Funktionen und reinen PHP Code der in einer Datei definiert ist,
  143. betrachten. Sie definiert die folgenden Methoden:
  144. </para>
  145. <itemizedlist>
  146. <listitem><para>
  147. <code>getFileName()</code>: empfängt den Dateinamen der Datei die reflektiert wird.
  148. </para></listitem>
  149. <listitem><para>
  150. <code>getStartLine()</code>: empfängt den Startwert der Datei (Immer "1").
  151. </para></listitem>
  152. <listitem><para>
  153. <code>getEndLine()</code>: empfängt die letzte Teile / Anzahl der Linien in der
  154. Datei.
  155. </para></listitem>
  156. <listitem><para>
  157. <code>getDocComment($reflectionClass = 'Zend_Reflection_Docblock')</code>:
  158. empfängt das Reflection Objekt des Datei-Level DocBlocks.
  159. </para></listitem>
  160. <listitem><para>
  161. <code>getClasses($reflectionClass = 'Zend_Reflection_Class')</code>:
  162. empfängt ein Array von Reflection Objekten, eines für jede Klasse die in der
  163. Datei definiert ist.
  164. </para></listitem>
  165. <listitem><para>
  166. <code>getFunctions($reflectionClass = 'Zend_Reflection_Function')</code>:
  167. empfängt ein Array von Reflection Objekten, eines für jede Funktion die in der
  168. Datei definiert ist.
  169. </para></listitem>
  170. <listitem><para>
  171. <code>getClass($name = null, $reflectionClass = 'Zend_Reflection_Class')</code>:
  172. empfängt das Reflection Objekt für eine einzelne Klasse.
  173. </para></listitem>
  174. <listitem><para>
  175. <code>getContents()</code>: empfängt den kompletten Inhalt der Datei.
  176. </para></listitem>
  177. </itemizedlist>
  178. </sect2>
  179. <sect2 id="zend.reflection.reference.class">
  180. <title>Zend_Reflection_Class</title>
  181. <para>
  182. <classname>Zend_Reflection_Class</classname> erweitert <code>ReflectionClass</code> und
  183. folgt dessen API. Sie fügt eine zusätzliche, <code>getDeclaringFile()</code>, Methode
  184. hinzu, welche verwendet werden kann um das <classname>Zend_Reflection_File</classname>
  185. Reflection Objekt für die definierte Datei zu erhalten.
  186. </para>
  187. <para>
  188. Zusätzlich fügen die folgenden Methoden ein zusätzliches Argument für die Spezifikation
  189. der Reflection Klasse hinzu, die zu verwenden ist wenn ein Reflection Objekt geholt
  190. wird.
  191. </para>
  192. <itemizedlist>
  193. <listitem><para>
  194. <code>getDeclaringFile($reflectionClass = 'Zend_Reflection_File')</code>
  195. </para></listitem>
  196. <listitem><para>
  197. <code>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</code>
  198. </para></listitem>
  199. <listitem><para>
  200. <code>getInterfaces($reflectionClass = 'Zend_Reflection_Class')</code>
  201. </para></listitem>
  202. <listitem><para>
  203. <code>getMethod($reflectionClass = 'Zend_Reflection_Method')</code>
  204. </para></listitem>
  205. <listitem><para>
  206. <code>getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')</code>
  207. </para></listitem>
  208. <listitem><para>
  209. <code>getParentClass($reflectionClass = 'Zend_Reflection_Class')</code>
  210. </para></listitem>
  211. <listitem><para>
  212. <code>getProperty($name, $reflectionClass =
  213. 'Zend_Reflection_Property')</code>
  214. </para></listitem>
  215. <listitem><para>
  216. <code>getProperties($filter = -1, $reflectionClass =
  217. 'Zend_Reflection_Property')</code>
  218. </para></listitem>
  219. </itemizedlist>
  220. </sect2>
  221. <sect2 id="zend.reflection.reference.extension">
  222. <title>Zend_Reflection_Extension</title>
  223. <para>
  224. <classname>Zend_Reflection_Extension</classname> erweitert
  225. <code>ReflectionExtension</code> und folgt dessen API. Sie überschreibt die folgenden
  226. Methoden und fügt ein zusätzliches Argument hinzu, für die Spezifikation der Reflection
  227. Klasse, die zu verwenden ist wenn ein Reflection Objekt geholt wird:
  228. </para>
  229. <itemizedlist>
  230. <listitem><para>
  231. <code>getFunctions($reflectionClass = 'Zend_Reflection_Function')</code>: empfängt
  232. ein Array von Reflection Objekten welche die Funktionen repräsentieren die von der
  233. Erweiterung definiert werden.
  234. </para></listitem>
  235. <listitem><para>
  236. <code>getClasses($reflectionClass = 'Zend_Reflection_Class')</code>: empfängt ein
  237. Array von Reflection Objekten welche die Klassen repräsentieren die von der
  238. Erweiterung definiert werden.
  239. </para></listitem>
  240. </itemizedlist>
  241. </sect2>
  242. <sect2 id="zend.reflection.reference.function">
  243. <title>Zend_Reflection_Function</title>
  244. <para>
  245. <classname>Zend_Reflection_Function</classname> fügt eine Methode für das Empfangen des
  246. Rückgabewerts der Funktion hinzu, und überschreibt diverse Methoden um die
  247. Spezifikation der Reflection Klasse zu erlauben, die für zurückgegebene Reflection
  248. Objekte zu verwenden ist.
  249. </para>
  250. <itemizedlist>
  251. <listitem><para>
  252. <code>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</code>: empfängt
  253. das Reflection Objekt des Funktions DocBlocks.
  254. </para></listitem>
  255. <listitem><para>
  256. <code>getParameters($reflectionClass = 'Zend_Reflection_Parameter')</code>:
  257. empfängt ein Array aller Reflection Objekte für die Parameter der Funktionen.
  258. </para></listitem>
  259. <listitem><para>
  260. <code>getReturn()</code>: empfängt das Reflection Objekt des Rückgabewerts.
  261. </para></listitem>
  262. </itemizedlist>
  263. </sect2>
  264. <sect2 id="zend.reflection.reference.method">
  265. <title>Zend_Reflection_Method</title>
  266. <para>
  267. <classname>Zend_Reflection_Method</classname> spiegelt
  268. <classname>Zend_Reflection_Function</classname> und überschreibt nur eine zusätzliche
  269. Methode:
  270. </para>
  271. <itemizedlist>
  272. <listitem><para>
  273. <code>getParentClass($reflectionClass = 'Zend_Reflection_Class')</code>: empfängt
  274. das Reflection Objekt der Eltern-Klasse.
  275. </para></listitem>
  276. </itemizedlist>
  277. </sect2>
  278. <sect2 id="zend.reflection.reference.parameter">
  279. <title>Zend_Reflection_Parameter</title>
  280. <para>
  281. <classname>Zend_Reflection_Parameter</classname> fügt eine Methode für das Empfangen
  282. des Parametertyps hinzu, und überschreibt Methoden um die Spezifikation der Reflection
  283. Klasse zu erlauben, die für zurückgegebene Reflection Objekte zu verwenden ist.
  284. </para>
  285. <itemizedlist>
  286. <listitem><para>
  287. <code>getDeclaringClass($reflectionClass = 'Zend_Reflection_Class')</code>:
  288. gibt die deklarierte Klasse des Parameters als Reflection Objekt zurück (wenn
  289. vorhanden).
  290. </para></listitem>
  291. <listitem><para>
  292. <code>getClass($reflectionClass = 'Zend_Reflection_Class')</code>: gibt die Klasse
  293. des Parameters als Reflection Objekt zurück (wenn vorhanden).
  294. </para></listitem>
  295. <listitem><para>
  296. <code>getDeclaringFunction($reflectionClass = 'Zend_Reflection_Function')</code>:
  297. gibt die Funktion des Parameters als Reflection Objekt zurück (wenn vorhanden).
  298. </para></listitem>
  299. <listitem><para>
  300. <code>getType()</code>: gibt den Typ des Parameters zurück.
  301. </para></listitem>
  302. </itemizedlist>
  303. </sect2>
  304. <sect2 id="zend.reflection.reference.property">
  305. <title>Zend_Reflection_Property</title>
  306. <para>
  307. <classname>Zend_Reflection_Property</classname> überschreibt eine einzelne Methode um
  308. die Spezifikation der zurückgegebenen Reflection Objekt Klasse zu spezifizieren:
  309. </para>
  310. <itemizedlist>
  311. <listitem><para>
  312. <code>getDeclaringClass($reflectionClass = 'Zend_Reflection_Class')</code>:
  313. empfängt die deklarierte Klasse der Eigenschaft als Reflection Objekt.
  314. </para></listitem>
  315. </itemizedlist>
  316. </sect2>
  317. </sect1>