Zend_Reflection-Reference.xml 19 KB

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