Zend_Reflection-Reference.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15192 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.reflection.reference">
  5. <title>Zend_Reflection Referenz</title>
  6. <para>
  7. Die verschiedenen Klassen in <code>Zend_Reflection</code> 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. <code>Zend_Reflection</code> 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 <code>Zend_Reflection</code> überschreibt die
  22. <code>getDocblock()</code> Methode um eine Instanz von
  23. <code>Zend_Reflection_Docblock</code> zurückzugeben. Die klasse bietet Introspektion in die
  24. DocBlocks und Annotation Tags.
  25. </para>
  26. <para>
  27. <code>Zend_Reflection_File</code> ist eine neue Reflection Klasse welche die Introspektion
  28. von PHP Dateien erlaubt. Mit Ihr kann man die Klassen, Funktionen und globalen PHP Code
  29. 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. <code>Zend_Reflection_Docblock</code> ist das Herz von
  40. <code>Zend_Reflection_Docblock</code> Bonus über PHP's Reflection API. Es bietet die
  41. 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 <code>false</code> wenn es nicht vorhanden ist.
  70. </para></listitem>
  71. <listitem><para>
  72. <code>getTags($filter)</code>: Gibt alle Tags zurück, oder alle Tags die dem
  73. angegebenen <code>$filter</code> String entsprechen. Die zurückgegebenen Tags
  74. werden ein Array von <code>Zend_Reflection_Docblock_Tag</code> Objekten sein.
  75. </para></listitem>
  76. </itemizedlist>
  77. </sect2>
  78. <sect2 id="zend.reflection.reference.docblock-tag">
  79. <title>Zend_Reflection_Docblock_Tag</title>
  80. <para>
  81. <code>Zend_Reflection_Docblock_Tag</code> bietet Reflection für individuelle
  82. Annotation Tags. Die meisten Tags bestehen nur aus einem Namen und einer Beschreibung.
  83. Im Fall einiger spezieller Tags, bietet die Klasse eine Factory Methode um eine
  84. Instanz der entsprechenden Klasse zu erhalten.
  85. </para>
  86. <para>
  87. Die folgenden Methoden sind für <code>Zend_Reflection_Docblock_Tag</code> definiert:
  88. </para>
  89. <itemizedlist>
  90. <listitem><para>
  91. <code>factory($tagDocblockLine)</code>: Instanziert die entsprechende Reflection
  92. Klasse des Tags und gibt diese zurück.
  93. </para></listitem>
  94. <listitem><para>
  95. <code>getName()</code>: Gibt den Namen des Annotation Tags zurück.
  96. </para></listitem>
  97. <listitem><para>
  98. <code>getDescription()</code>: Gibt die Beschreibung des Annotation Tags zurück.
  99. </para></listitem>
  100. </itemizedlist>
  101. </sect2>
  102. <sect2 id="zend.reflection.reference.docblock-tag-param">
  103. <title>Zend_Reflection_Docblock_Tag_Param</title>
  104. <para>
  105. <code>Zend_Reflection_Docblock_Tag_Param</code> ist eine spezialisierte Version von
  106. <code>Zend_Reflection_Docblock_Tag</code>. Die Beschreibung des <code>@param</code>
  107. Annotation Tags besteht aus dem Typ des Parameters, dem Namen der Variable und der
  108. Beschreibung der Variable. Sie fügt die folgenden Methoden zu
  109. <code>Zend_Reflection_Docblock_Tag</code> hinzu:
  110. </para>
  111. <itemizedlist>
  112. <listitem><para>
  113. <code>getType()</code>: Gibt den Variablentyp des Parameters zurück.
  114. </para></listitem>
  115. <listitem><para>
  116. <code>getVariableName()</code>: Gibt den Variablennamen des Parameters zurück.
  117. </para></listitem>
  118. </itemizedlist>
  119. </sect2>
  120. <sect2 id="zend.reflection.reference.docblock-tag-return">
  121. <title>Zend_Reflection_Docblock_Tag_Return</title>
  122. <para>
  123. Wie <code>Zend_Reflection_Docblock_Tag_Param</code> ist
  124. <code>Zend_Reflection_Docblock_Tag_Return</code> eine spezialisierte Version von
  125. <code>Zend_Reflection_Docblock_Tag</code>. Die Beschreibung des <code>@return</code>
  126. Annotation Tags besteht aus dem Rückgabetyp und der Beschreibung der Variable. Sie
  127. fügt die folgende Methode zu <code>Zend_Reflection_Docblock_Tag</code> hinzu:
  128. </para>
  129. <itemizedlist>
  130. <listitem><para>
  131. <code>getType()</code>: gibt den Rückgabetyp zurück.
  132. </para></listitem>
  133. </itemizedlist>
  134. </sect2>
  135. <sect2 id="zend.reflection.reference.file">
  136. <title>Zend_Reflection_File</title>
  137. <para>
  138. <code>Zend_Reflection_File</code> bietet Introspection in PHP Dateien. Mit Ihr kann
  139. man Klassen, Funktionen und reinen PHP Code der in einer Datei definiert ist,
  140. betrachten. Sie definiert die folgenden Methoden:
  141. </para>
  142. <itemizedlist>
  143. <listitem><para>
  144. <code>getFileName()</code>: empfängt den Dateinamen der Datei die reflektiert wird.
  145. </para></listitem>
  146. <listitem><para>
  147. <code>getStartLine()</code>: empfängt den Startwert der Datei (Immer "1").
  148. </para></listitem>
  149. <listitem><para>
  150. <code>getEndLine()</code>: empfängt die letzte Teile / Anzahl der Linien in der
  151. Datei.
  152. </para></listitem>
  153. <listitem><para>
  154. <code>getDocComment($reflectionClass = 'Zend_Reflection_Docblock')</code>:
  155. empfängt das Reflection Objekt des Datei-Level DocBlocks.
  156. </para></listitem>
  157. <listitem><para>
  158. <code>getClasses($reflectionClass = 'Zend_Reflection_Class')</code>:
  159. empfängt ein Array von Reflection Objekten, eines für jede Klasse die in der
  160. Datei definiert ist.
  161. </para></listitem>
  162. <listitem><para>
  163. <code>getFunctions($reflectionClass = 'Zend_Reflection_Function')</code>:
  164. empfängt ein Array von Reflection Objekten, eines für jede Funktion die in der
  165. Datei definiert ist.
  166. </para></listitem>
  167. <listitem><para>
  168. <code>getClass($name = null, $reflectionClass = 'Zend_Reflection_Class')</code>:
  169. empfängt das Reflection Objekt für eine einzelne Klasse.
  170. </para></listitem>
  171. <listitem><para>
  172. <code>getContents()</code>: empfängt den kompletten Inhalt der Datei.
  173. </para></listitem>
  174. </itemizedlist>
  175. </sect2>
  176. <sect2 id="zend.reflection.reference.class">
  177. <title>Zend_Reflection_Class</title>
  178. <para>
  179. <code>Zend_Reflection_Class</code> erweitert <code>ReflectionClass</code> und folgt
  180. dessen API. Sie fügt eine zusätzliche, <code>getDeclaringFile()</code>, Methode
  181. hinzu, welche verwendet werden kann um das <code>Zend_Reflection_File</code>
  182. Reflection Objekt für die definierte Datei zu erhalten.
  183. </para>
  184. <para>
  185. Zusätzlich fügen die folgenden Methoden ein zusätzliches Argument für die Spezifikation
  186. der Reflection Klasse hinzu, die zu verwenden ist wenn ein Reflection Objekt geholt
  187. wird.
  188. </para>
  189. <itemizedlist>
  190. <listitem><para>
  191. <code>getDeclaringFile($reflectionClass = 'Zend_Reflection_File')</code>
  192. </para></listitem>
  193. <listitem><para>
  194. <code>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</code>
  195. </para></listitem>
  196. <listitem><para>
  197. <code>getInterfaces($reflectionClass = 'Zend_Reflection_Class')</code>
  198. </para></listitem>
  199. <listitem><para>
  200. <code>getMethod($reflectionClass = 'Zend_Reflection_Method')</code>
  201. </para></listitem>
  202. <listitem><para>
  203. <code>getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')</code>
  204. </para></listitem>
  205. <listitem><para>
  206. <code>getParentClass($reflectionClass = 'Zend_Reflection_Class')</code>
  207. </para></listitem>
  208. <listitem><para>
  209. <code>getProperty($name, $reflectionClass =
  210. 'Zend_Reflection_Property')</code>
  211. </para></listitem>
  212. <listitem><para>
  213. <code>getProperties($filter = -1, $reflectionClass =
  214. 'Zend_Reflection_Property')</code>
  215. </para></listitem>
  216. </itemizedlist>
  217. </sect2>
  218. <sect2 id="zend.reflection.reference.extension">
  219. <title>Zend_Reflection_Extension</title>
  220. <para>
  221. <code>Zend_Reflection_Extension</code> erweitert <code>ReflectionExtension</code> und
  222. folgt dessen API. Sie überschreibt die folgenden Methoden und fügt ein zusätzliches
  223. Argument hinzu, für die Spezifikation der Reflection Klasse, die zu verwenden ist
  224. wenn ein Reflection Objekt geholt wird:
  225. </para>
  226. <itemizedlist>
  227. <listitem><para>
  228. <code>getFunctions($reflectionClass = 'Zend_Reflection_Function')</code>: empfängt
  229. ein Array von Reflection Objekten welche die Funktionen repräsentieren die von der
  230. Erweiterung definiert werden.
  231. </para></listitem>
  232. <listitem><para>
  233. <code>getClasses($reflectionClass = 'Zend_Reflection_Class')</code>: empfängt ein
  234. Array von Reflection Objekten welche die Klassen repräsentieren die von der
  235. Erweiterung definiert werden.
  236. </para></listitem>
  237. </itemizedlist>
  238. </sect2>
  239. <sect2 id="zend.reflection.reference.function">
  240. <title>Zend_Reflection_Function</title>
  241. <para>
  242. <code>Zend_Reflection_Function</code> fügt eine Methode für das Empfangen des
  243. Rückgabewerts der Funktion hinzu, und überschreibt diverse Methoden um die
  244. Spezifikation der Reflection Klasse zu erlauben, die für zurückgegebene Reflection
  245. Objekte zu verwenden ist.
  246. </para>
  247. <itemizedlist>
  248. <listitem><para>
  249. <code>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</code>: empfängt
  250. das Reflection Objekt des Funktions DocBlocks.
  251. </para></listitem>
  252. <listitem><para>
  253. <code>getParameters($reflectionClass = 'Zend_Reflection_Parameter')</code>:
  254. empfängt ein Array aller Reflection Objekte für die Parameter der Funktionen.
  255. </para></listitem>
  256. <listitem><para>
  257. <code>getReturn()</code>: empfängt das Reflection Objekt des Rückgabewerts.
  258. </para></listitem>
  259. </itemizedlist>
  260. </sect2>
  261. <sect2 id="zend.reflection.reference.method">
  262. <title>Zend_Reflection_Method</title>
  263. <para>
  264. <code>Zend_Reflection_Method</code> spiegelt <code>Zend_Reflection_Function</code>
  265. und überschreibt nur eine zusätzliche Methode:
  266. </para>
  267. <itemizedlist>
  268. <listitem><para>
  269. <code>getParentClass($reflectionClass = 'Zend_Reflection_Class')</code>: empfängt
  270. das Reflection Objekt der Eltern-Klasse.
  271. </para></listitem>
  272. </itemizedlist>
  273. </sect2>
  274. <sect2 id="zend.reflection.reference.parameter">
  275. <title>Zend_Reflection_Parameter</title>
  276. <para>
  277. <code>Zend_Reflection_Parameter</code> fügt eine Methode für das Empfangen des
  278. Parametertyps hinzu, und überschreibt Methoden um die Spezifikation der Reflection
  279. Klasse zu erlauben, die für zurückgegebene Reflection Objekte zu verwenden ist.
  280. </para>
  281. <itemizedlist>
  282. <listitem><para>
  283. <code>getDeclaringClass($reflectionClass = 'Zend_Reflection_Class')</code>:
  284. gibt die deklarierte Klasse des Parameters als Reflection Objekt zurück (wenn
  285. vorhanden).
  286. </para></listitem>
  287. <listitem><para>
  288. <code>getClass($reflectionClass = 'Zend_Reflection_Class')</code>: gibt die Klasse
  289. des Parameters als Reflection Objekt zurück (wenn vorhanden).
  290. </para></listitem>
  291. <listitem><para>
  292. <code>getDeclaringFunction($reflectionClass = 'Zend_Reflection_Function')</code>:
  293. gibt die Funktion des Parameters als Reflection Objekt zurück (wenn vorhanden).
  294. </para></listitem>
  295. <listitem><para>
  296. <code>getType()</code>: gibt den Typ des Parameters zurück.
  297. </para></listitem>
  298. </itemizedlist>
  299. </sect2>
  300. <sect2 id="zend.reflection.reference.property">
  301. <title>Zend_Reflection_Property</title>
  302. <para>
  303. <code>Zend_Reflection_Property</code> überschreibt eine einzelne Methode um die
  304. Spezifikation der zurückgegebenen Reflection Objekt Klasse zu spezifizieren:
  305. </para>
  306. <itemizedlist>
  307. <listitem><para>
  308. <code>getDeclaringClass($reflectionClass = 'Zend_Reflection_Class')</code>:
  309. empfängt die deklarierte Klasse der Eigenschaft als Reflection Objekt.
  310. </para></listitem>
  311. </itemizedlist>
  312. </sect2>
  313. </sect1>