Zend_Reflection-Reference.xml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.reflection.reference">
  5. <title>Réference de Zend_Reflection</title>
  6. <para>
  7. Les classes de <classname>Zend_Reflection</classname> reprennent l'API de <ulink
  8. url="http://php.net/reflection">la Reflection <acronym>PHP</acronym></ulink> - mais avec une différence
  9. importante : la Reflection <acronym>PHP</acronym> ne propose pas de manière d'introspecter les tags de
  10. documentation PHPDoc, ni les types des variables paramètres ou encore les types de retour
  11. des fonctions.
  12. </para>
  13. <para>
  14. <classname>Zend_Reflection</classname> analyse les commentaires PHPDoc pour déterminer les types
  15. des variables passées en paramètres ou de retour. Plus spécialement, les annotations
  16. <code>@param</code> et <code>@return</code> sont utilisées, même s'il reste possible
  17. d'analyser les autres blocs de commentaire, ainsi que leurs descriptions respectives.
  18. </para>
  19. <para>
  20. Chaque objet de réflexion dans <classname>Zend_Reflection</classname>, surcharge la méthode
  21. <methodname>getDocblock()</methodname> pour retourner une instance de
  22. <classname>Zend_Reflection_Docblock</classname>. Cette classe propose alors l'introspection des blocs
  23. de commentaires et notamment des tags PHPDoc.
  24. </para>
  25. <para>
  26. <classname>Zend_Reflection_File</classname> est une nouvelle classe qui permet d'introspecter
  27. les fichiers <acronym>PHP</acronym> à la recherche de classes, fonctions ou encore code global <acronym>PHP</acronym> contenu à
  28. l'intérieur.
  29. </para>
  30. <para>
  31. Enfin, la plupart des méthodes qui retournent des objets réflexion acceptent un second
  32. paramètre permettant de spécifier la classe qui sera instanciée pour créer de tels
  33. objets.
  34. </para>
  35. <sect2 id="zend.reflection.reference.docblock">
  36. <title>Zend_Reflection_Docblock</title>
  37. <para>
  38. <classname>Zend_Reflection_Docblock</classname> est le coeur de la valeur ajoutée par
  39. <classname>Zend_Reflection</classname> par rapport à la Reflection <acronym>PHP</acronym>. Voici les méthodes
  40. proposées&#160;:
  41. </para>
  42. <itemizedlist>
  43. <listitem>
  44. <para><methodname>getContents()</methodname>&#160;: retourne tout le contenu du bloc.</para>
  45. </listitem>
  46. <listitem>
  47. <para>
  48. <methodname>getStartLine()</methodname>&#160;: retourne la position de départ du bloc dans
  49. le fichier.
  50. </para>
  51. </listitem>
  52. <listitem>
  53. <para>
  54. <methodname>getEndLine()</methodname>&#160;: retourne la position de fin du bloc dans le
  55. fichier.
  56. </para>
  57. </listitem>
  58. <listitem>
  59. <para>
  60. <methodname>getShortDescription()</methodname>&#160;: récupère la description courte (en
  61. général la première ligne de commentaire).
  62. </para>
  63. </listitem>
  64. <listitem>
  65. <para>
  66. <methodname>getLongDescription()</methodname>&#160;: récupère la description longue du
  67. bloc.
  68. </para>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. <methodname>hasTag($name)</methodname>&#160;: détermine si le bloc possède un tag
  73. particulier.
  74. </para>
  75. </listitem>
  76. <listitem>
  77. <para>
  78. <methodname>getTag($name)</methodname>&#160;: Récupère un tag particulier ou
  79. <constant>FALSE</constant> si celui-ci est absent.
  80. </para>
  81. </listitem>
  82. <listitem>
  83. <para>
  84. <methodname>getTags($filter)</methodname>&#160;: Récupère tous les tags qui correspondent au
  85. filtre <varname>$filter</varname>. Le type de retour est un tableau d'objets
  86. <classname>Zend_Reflection_Docblock_Tag</classname>.
  87. </para>
  88. </listitem>
  89. </itemizedlist>
  90. </sect2>
  91. <sect2 id="zend.reflection.reference.docblock-tag">
  92. <title>Zend_Reflection_Docblock_Tag</title>
  93. <para>
  94. <classname>Zend_Reflection_Docblock_Tag</classname> propose la réflexion pour un tag
  95. individuel. La plupart des tags se composent d'un nom et d'un description. Dans le cas
  96. de certains tags spéciaux, la classe propose une méthode de fabrique qui retourne la
  97. bonne instance.
  98. </para>
  99. <para>Voici les méthodes de <classname>Zend_Reflection_Docblock_Tag</classname>&#160;:</para>
  100. <itemizedlist>
  101. <listitem>
  102. <para>
  103. <methodname>factory($tagDocblockLine)</methodname>&#160;: instancie la bonne classe de
  104. reflection pour le tag correspondant et en retourne l'objet.
  105. </para>
  106. </listitem>
  107. <listitem>
  108. <para><methodname>getName()</methodname>&#160;: retourne le nom du tag.</para>
  109. </listitem>
  110. <listitem>
  111. <para><methodname>getDescription()</methodname>&#160;: retourne la description du tag.</para>
  112. </listitem>
  113. </itemizedlist>
  114. </sect2>
  115. <sect2 id="zend.reflection.reference.docblock-tag-param">
  116. <title>Zend_Reflection_Docblock_Tag_Param</title>
  117. <para>
  118. <classname>Zend_Reflection_Docblock_Tag_Param</classname> est une version spéciale de
  119. <classname>Zend_Reflection_Docblock_Tag</classname>. La description du tag <code>@param</code>
  120. consiste en un type, un nom de variable et une description. Elle ajoute les méthodes
  121. suivantes à <classname>Zend_Reflection_Docblock_Tag</classname>&#160;:
  122. </para>
  123. <itemizedlist>
  124. <listitem>
  125. <para>
  126. <methodname>getType()</methodname>&#160;: Retourne le type de la variable considérée par le
  127. tag.
  128. </para>
  129. </listitem>
  130. <listitem>
  131. <para>
  132. <methodname>getVariableName()</methodname>&#160;: Retourne le nom de la variable considérée
  133. par le tag.
  134. </para>
  135. </listitem>
  136. </itemizedlist>
  137. </sect2>
  138. <sect2 id="zend.reflection.reference.docblock-tag-return">
  139. <title>Zend_Reflection_Docblock_Tag_Return</title>
  140. <para>
  141. Comme <classname>Zend_Reflection_Docblock_Tag_Param</classname>,
  142. <classname>Zend_Reflection_Docblock_Tag_Return</classname> est une version spéciale de
  143. <classname>Zend_Reflection_Docblock_Tag</classname>. Le tag <code>@return</code> consiste en un
  144. type de retour et une description. Elle ajoute les méthodes suivantes à
  145. <classname>Zend_Reflection_Docblock_Tag</classname>&#160;:
  146. </para>
  147. <itemizedlist>
  148. <listitem>
  149. <para><methodname>getType()</methodname>: retourne le type de retour.</para>
  150. </listitem>
  151. </itemizedlist>
  152. </sect2>
  153. <sect2 id="zend.reflection.reference.file">
  154. <title>Zend_Reflection_File</title>
  155. <para>
  156. <classname>Zend_Reflection_File</classname> propose l'introspection de fichiers <acronym>PHP</acronym>. Grâce à
  157. cela, vous pouvez déterminer les classes, fonctions ou le code pur <acronym>PHP</acronym> contenus dans un
  158. fichier <acronym>PHP</acronym> donné. Voici les méthodes proposées&#160;:
  159. </para>
  160. <itemizedlist>
  161. <listitem>
  162. <para>
  163. <methodname>getFileName()</methodname>&#160;: retourne le nom du fichier en cours de
  164. réflexion.
  165. </para>
  166. </listitem>
  167. <listitem>
  168. <para>
  169. <methodname>getStartLine()</methodname>&#160;: retourne la ligne de démarrage du fichier
  170. (toujours "1").
  171. </para>
  172. </listitem>
  173. <listitem>
  174. <para>
  175. <methodname>getEndLine()</methodname>&#160;: retourne la dernière ligne du fichier, donc le
  176. nombre de lignes.
  177. </para>
  178. </listitem>
  179. <listitem>
  180. <para>
  181. <methodname>getDocComment($reflectionClass = 'Zend_Reflection_Docblock')</methodname>&#160;:
  182. retourne un objet de réflection de commentaire PHPDoc du fichier en cours
  183. d'analyse.
  184. </para>
  185. </listitem>
  186. <listitem>
  187. <para>
  188. <methodname>getClasses($reflectionClass = 'Zend_Reflection_Class')</methodname>&#160;:
  189. retourne un tableau d'objets de réflexion de classe, pour les classes contenues
  190. dans le fichier en cours d'analyse.
  191. </para>
  192. </listitem>
  193. <listitem>
  194. <para>
  195. <methodname>getFunctions($reflectionClass = 'Zend_Reflection_Function')</methodname>&#160;:
  196. retourne un tableau d'objets de réflexion de fonction, pour les fonctions
  197. contenues dans le fichier en cours d'analyse.
  198. </para>
  199. </listitem>
  200. <listitem>
  201. <para>
  202. <code>getClass($name = null, $reflectionClass =
  203. 'Zend_Reflection_Class')</code>&#160;: retourne l'objet de réflexion pour la
  204. classe contenue dans le fichier en cours d'analyse.
  205. </para>
  206. </listitem>
  207. <listitem>
  208. <para>
  209. <methodname>getContents()</methodname>&#160;: retourne tout le contenu du fichier en cours
  210. d'analyse.
  211. </para>
  212. </listitem>
  213. </itemizedlist>
  214. </sect2>
  215. <sect2 id="zend.reflection.reference.class">
  216. <title>Zend_Reflection_Class</title>
  217. <para>
  218. <classname>Zend_Reflection_Class</classname> étend <code>ReflectionClass</code>, et propose
  219. son <acronym>API</acronym>. Elle ajoute juste une méthode, <methodname>getDeclaringFile()</methodname>, qui peut être
  220. utilisée pour créer un objet <classname>Zend_Reflection_File</classname>.
  221. </para>
  222. <para>
  223. Aussi, les méthodes suivantes proposent un argument supplémentaire pour spécifier
  224. sa propre classe de réflexion:
  225. </para>
  226. <itemizedlist>
  227. <listitem>
  228. <para>
  229. <methodname>getDeclaringFile($reflectionClass = 'Zend_Reflection_File')</methodname>
  230. </para>
  231. </listitem>
  232. <listitem>
  233. <para>
  234. <methodname>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</methodname>
  235. </para>
  236. </listitem>
  237. <listitem>
  238. <para>
  239. <methodname>getInterfaces($reflectionClass = 'Zend_Reflection_Class')</methodname>
  240. </para>
  241. </listitem>
  242. <listitem>
  243. <para><methodname>getMethod($reflectionClass = 'Zend_Reflection_Method')</methodname></para>
  244. </listitem>
  245. <listitem>
  246. <para>
  247. <code>
  248. getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')
  249. </code>
  250. </para>
  251. </listitem>
  252. <listitem>
  253. <para>
  254. <methodname>getParentClass($reflectionClass = 'Zend_Reflection_Class')</methodname>
  255. </para>
  256. </listitem>
  257. <listitem>
  258. <para>
  259. <methodname>getProperty($name, $reflectionClass = 'Zend_Reflection_Property')</methodname>
  260. </para>
  261. </listitem>
  262. <listitem>
  263. <para>
  264. <code>
  265. getProperties($filter = -1, $reflectionClass = 'Zend_Reflection_Property')
  266. </code>
  267. </para>
  268. </listitem>
  269. </itemizedlist>
  270. </sect2>
  271. <sect2 id="zend.reflection.reference.extension">
  272. <title>Zend_Reflection_Extension</title>
  273. <para>
  274. <classname>Zend_Reflection_Extension</classname> étend <code>ReflectionExtension</code> et
  275. propose son <acronym>API</acronym>. Elle surcharge les méthodes suivantes afin d'ajouter un paramètre
  276. permettant de spécifier sa propre classe de réflexion&#160;:
  277. </para>
  278. <itemizedlist>
  279. <listitem>
  280. <para>
  281. <methodname>getFunctions($reflectionClass = 'Zend_Reflection_Function')</methodname>&#160;:
  282. retourne un tableau d'objets réflexion représentants les fonctions définies par
  283. l'extension en question.
  284. </para>
  285. </listitem>
  286. <listitem>
  287. <para>
  288. <methodname>getClasses($reflectionClass = 'Zend_Reflection_Class')</methodname>&#160;:
  289. retourne un tableau d'objets réflexion représentants les classes définies par
  290. l'extension en question.
  291. </para>
  292. </listitem>
  293. </itemizedlist>
  294. </sect2>
  295. <sect2 id="zend.reflection.reference.function">
  296. <title>Zend_Reflection_Function</title>
  297. <para>
  298. <classname>Zend_Reflection_Function</classname> ajoute une méthode pour retrouver le type de
  299. retour de la fonction introspéctée, et surcharge d'autres méthodes pour proposer de
  300. passer en paramètre une classe de réflexion à utiliser.
  301. </para>
  302. <itemizedlist>
  303. <listitem>
  304. <para>
  305. <methodname>getDocblock($reflectionClass = 'Zend_Reflection_Docblock')</methodname>:
  306. Retourne un objet représentant les blocs de documentation.
  307. </para>
  308. </listitem>
  309. <listitem>
  310. <para>
  311. <code>getParameters($reflectionClass =
  312. 'Zend_Reflection_Parameter')</code>&#160;: Retourne un tableau représentant les
  313. paramètres de la fonction analysée sous forme d'objets réflexion.
  314. </para>
  315. </listitem>
  316. <listitem>
  317. <para>
  318. <methodname>getReturn()</methodname>&#160;: Retourne le type de retour sous forme d'objet
  319. réflexion
  320. </para>
  321. </listitem>
  322. </itemizedlist>
  323. </sect2>
  324. <sect2 id="zend.reflection.reference.method">
  325. <title>Zend_Reflection_Method</title>
  326. <para>
  327. <classname>Zend_Reflection_Method</classname> reprend l'API de
  328. <classname>Zend_Reflection_Function</classname> et surcharge la méthode suivante:
  329. </para>
  330. <itemizedlist>
  331. <listitem>
  332. <para>
  333. <methodname>getParentClass($reflectionClass = 'Zend_Reflection_Class')</methodname>&#160;:
  334. Retourne un objet réflexion de la classe parente
  335. </para>
  336. </listitem>
  337. </itemizedlist>
  338. </sect2>
  339. <sect2 id="zend.reflection.reference.parameter">
  340. <title>Zend_Reflection_Parameter</title>
  341. <para>
  342. <classname>Zend_Reflection_Parameter</classname> ajoute une méthode pour retrouver le type
  343. d'un paramètre, et aussi surcharge certaines méthodes en rajoutant un paramètre
  344. permettant de spécifier sa propre classe de réflexion.
  345. </para>
  346. <itemizedlist>
  347. <listitem>
  348. <para>
  349. <code>getDeclaringClass($reflectionClass =
  350. 'Zend_Reflection_Class')</code>&#160;: retourne un objet réflexion représentant
  351. la classe de déclaration du paramètre (si disponible).
  352. </para>
  353. </listitem>
  354. <listitem>
  355. <para>
  356. <methodname>getClass($reflectionClass = 'Zend_Reflection_Class')</methodname>&#160;:
  357. retourne un objet réflexion représentant la classe de l'objet passé comme
  358. paramètre (si disponible).
  359. </para>
  360. </listitem>
  361. <listitem>
  362. <para>
  363. <code>getDeclaringFunction($reflectionClass =
  364. 'Zend_Reflection_Function')</code>&#160;: retourne un objet réflexion
  365. représentant la fonction passée comme paramètre (si disponible).
  366. </para>
  367. </listitem>
  368. <listitem>
  369. <para><methodname>getType()</methodname>&#160;: retourne le type du paramètre.</para>
  370. </listitem>
  371. </itemizedlist>
  372. </sect2>
  373. <sect2 id="zend.reflection.reference.property">
  374. <title>Zend_Reflection_Property</title>
  375. <para>
  376. <classname>Zend_Reflection_Property</classname> surcharge une seule méthode afin de pouvoir
  377. spécifier le type de classe de retour&#160;:
  378. </para>
  379. <itemizedlist>
  380. <listitem>
  381. <para>
  382. <code>getDeclaringClass($reflectionClass =
  383. 'Zend_Reflection_Class')</code>&#160;: Retourne un objet réflexion représentant
  384. la classe de l'objet passé comme paramètre (si disponible).
  385. </para>
  386. </listitem>
  387. </itemizedlist>
  388. </sect2>
  389. </sect1>