Zend_Loader-Autoloader.xml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 18840 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.loader.autoloader">
  5. <title>Der Autoloader</title>
  6. <para>
  7. <classname>Zend_Loader_Autoloader</classname> ist eine vollständige Autoloader Lösung für
  8. den Zend Framework. Sie wurde entwickelt um verschiedene Ziele zu lösen:
  9. </para>
  10. <itemizedlist>
  11. <listitem><para>
  12. Einen echten Namespace Autoloader bieten. (Frühere Inkarnationen waren mit
  13. Namespaces auf Benutzerebene verknüpft)
  14. </para></listitem>
  15. <listitem><para>
  16. Es zu erlauben eigene Callbacks als Autoloader zu registrieren und diese als Stack
  17. zu managen. (Zu der als das geschrieben wirde gab es einige Probleme mit
  18. <code>spl_autoload</code>, welche es nicht erlaubten einen Callback erneut zu
  19. registrieren wenn dieser eine Instanzmethode verwendet.)
  20. </para></listitem>
  21. <listitem><para>
  22. Er zu erlauben Namespaces optimiert zu matchen um schnellere Auflösung der Klasse
  23. zu erlauben.
  24. </para></listitem>
  25. </itemizedlist>
  26. <para>
  27. <classname>Zend_Loader_Autoloader</classname> implementiert ein Singleton, was es universell
  28. verwendbar macht. Das bietet die Möglichkeit zusätzlich Autoloader von überall im eigenen
  29. Code zu registrieren wo es notwendig ist.
  30. </para>
  31. <sect2 id="zend.loader.autoloader.usage">
  32. <title>Verwenden des Autoloaders</title>
  33. <para>
  34. Das erste Mal wenn eine Instanz des Autoloaders empfangen wird, registriert dieser sich
  35. mit <code>spl_autoload</code>. Man kann eine Instanz erhalten indem die
  36. <methodname>getInstance()</methodname> Methode verwendet wird:
  37. </para>
  38. <programlisting language="php"><![CDATA[
  39. $autoloader = Zend_Loader_Autoloader::getInstance();
  40. ]]></programlisting>
  41. <para>
  42. Standardmäßig ist der Autloader so konfiguriert das er den "Zend_" und "ZendX_"
  43. Namespaces entspricht. Wenn man seinen eigenen Bibliothekscode hat der seinen eigenen
  44. Namespace verwendet, kann man Ihn mit dem Autoloader registrieren indem die
  45. <methodname>registerNamespace()</methodname> Methode verwendet. Wenn der eigene
  46. Blbliothekscode ein Präfix von "My_" hat, könnte man auch folgendes tun:
  47. </para>
  48. <programlisting language="php"><![CDATA[
  49. $autoloader->registerNamespace('My_');
  50. ]]></programlisting>
  51. <note>
  52. <title>Namespace Präfixe</title>
  53. <para>
  54. Man sollte beachten das das vorhergehende Beispiel "My_" verwendet und nicht "My".
  55. Der Grund ist, das <classname>Zend_Loader_Autoloader</classname> als Autoloader für
  56. generelle Anwendungsfälle gedacht ist, und deshalb nicht die Annahme macht das ein
  57. angegebener Präfix eines Klassen Namespaces einen Unterstrich enthalten muß. Wenn
  58. der eigene Klassennamespace einen <emphasis>enhält</emphasis>, dann sollte man Ihn
  59. mit dem eigenen Namespace registrieren.
  60. </para>
  61. </note>
  62. <para>
  63. Man kann auch einen eigene Autoloader Callbacks registrieren, optional mit einem
  64. spezifischen Namespace (oder einer Gruppe von Namespaces).
  65. <classname>Zend_Loader_Autoloader</classname> versucht zuerst die passenden zu finden
  66. bevor sein interner Autoloading Mechanismus verwendet wird.
  67. </para>
  68. <para>
  69. Man könnte, als Beispiel, ein oder mehrere eZcomponents Komponenten mit der eigenen
  70. Zend Framework Anwendung verwenden wollen. Um deren Autoloading Möglichkeiten zu
  71. verwenden, müssen diese auf den Autoloader Stack gepusht werden indem man
  72. <methodname>pushAutoloader()</methodname> verwendet:
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. $autoloader->pushAutoloader(array('ezcBase', 'autoload'), 'ezc');
  76. ]]></programlisting>
  77. <para>
  78. Das zeigt dem Autoloader das der eZcomponents Autoloader für Klassen zu verwenden ist
  79. die mit "ezc" anfangen.
  80. </para>
  81. <para>
  82. Man kann die <methodname>unshiftAutoloader()</methodname> Methode verwenden um den
  83. Autoloader an den Anfang der Autoloader Kette hinzu zu fügen.
  84. </para>
  85. <para>
  86. Standmäßig, macht <classname>Zend_Loader_Autoloader</classname> keine
  87. Fehlerunterdrückung wenn sein interner Autoloader verwendet wird, der seinerseits
  88. <methodname>Zend_Loader::loadClass()</methodname> verwendet. Die meiste Zeit ist das
  89. genau das was man will. Trotzdem, gibt es Fälle in denen man Sie unterdrücken will.
  90. Man das mit Hilfe von <methodname>suppressNotFoundWarnings()</methodname> tun:
  91. </para>
  92. <programlisting language="php"><![CDATA[
  93. $autoloader->suppressNotFoundWarnings(true);
  94. ]]></programlisting>
  95. <para>
  96. Letztendlich kann es Zeiten geben in denen man will das der Autoloader irgendeinen
  97. Namespace verwendet. Zum Beispiel verwenden die PEAR Bibliotheken keinen gemeinsamen
  98. Namespace, was es schwierig macht individuelle Namespaces zu spezifizieren wenn viele
  99. PEAR Komponenten verwendet werden. Man kann die
  100. <methodname>setFallbackAutoloader()</methodname> Methode verwenden damit der Autoloader
  101. als catch-all arbeitet:
  102. </para>
  103. <programlisting language="php"><![CDATA[
  104. $autoloader->setFallbackAutoloader(true);
  105. ]]></programlisting>
  106. </sect2>
  107. <sect2 id="zend.loader.autoloader.zf-version">
  108. <title>Auswahl einer Zend Framework Version</title>
  109. <para>
  110. Typischerweise, verwendet man die Version des Zend Frameworks die mit dem Autoloader,
  111. den man instanziert, gekommen ist. Trotzdem ist es oft nützlich, wenn man ein Projekt
  112. entwickelt, spezielle Versionen zu verwenden, Major und Minor Branches, oder einfach
  113. die letzte Version. <classname>Zend_Loader_Autoloader</classname> bietet, seit Version
  114. 1.10, einige Features um bei dieser Arbeit zu helfen.
  115. </para>
  116. <para>
  117. Nehmen wir das folgende Szenario an:
  118. </para>
  119. <itemizedlist>
  120. <listitem>
  121. <para>
  122. Wärend der <emphasis>Entwicklung</emphasis> will man die letzte Version vom
  123. Zend Framework verwenden die man installiert hat, damit man sicherstellen kann
  124. das die Anwendung funktioniert wenn man zwischen Versionen hochrüstet.
  125. </para>
  126. <para>
  127. Wenn man auf die <emphasis>Qualitäts-Sicherung</emphasis> wechselt, benötigt man
  128. etwas mehr Stabilität, sodas man die letzte installierte Revision einer
  129. speziellen Minor Version verwenden will.
  130. </para>
  131. <para>
  132. Letztendlich, wenn man auf die <emphasis>Produktion</emphasis> wechselt, will
  133. man auf eine spezielle installierte Version festnageln, um sicherzustellen das
  134. kein Bruch stattfinden wenn man neue Versionen des Zend Frameworks auf dem
  135. eigenen Server hinzufügt.
  136. </para>
  137. </listitem>
  138. </itemizedlist>
  139. <para>
  140. Der Autoloader erlaubt es das mit der Methode <methodname>setZfPath()</methodname> zu
  141. tun. Diese Methode nimmt zwei Argumente, ein <emphasis>Pfad</emphasis> zu einem Set
  142. von Zend Framework Installationen, und eine <emphasis>Version</emphasis> die zu
  143. Verwenden ist. Sobald ausgeführt, wird dem <constant>include_path</constant> ein Pfad
  144. vorangestellt der auf die entsprechende Zend Framework Installationsbibliothek zeigt.
  145. </para>
  146. <para>
  147. Das Verzeichnis das man als den eigenen <emphasis>Pfad</emphasis> spezifiziert sollte
  148. einen Pfad wie den folgenden haben:
  149. </para>
  150. <programlisting language="text"><![CDATA[
  151. ZendFramework/
  152. |-- 1.9.2/
  153. | |-- library/
  154. |-- ZendFramework-1.9.1-minimal/
  155. | |-- library/
  156. |-- 1.8.4PL1/
  157. | |-- library/
  158. |-- 1.8.4/
  159. | |-- library/
  160. |-- ZendFramework-1.8.3/
  161. | |-- library/
  162. |-- 1.7.8/
  163. | |-- library/
  164. |-- 1.7.7/
  165. | |-- library/
  166. |-- 1.7.6/
  167. | |-- library/
  168. ]]></programlisting>
  169. <para>
  170. (wobei <emphasis>Pfad</emphasis> auf das Verzeichnis "ZendFramework" im obigen Beispiel
  171. zeigt)
  172. </para>
  173. <para>
  174. Es ist zu beachten das jedes Unterverzeichnis das Verzeichnis
  175. <filename>library</filename> enthalten sollte, welche den aktuellen Zend Framework
  176. Bibliothekscode enthält. Die individuellen Namen der Unterverzeichnisse können
  177. Versionsnummern sein, oder einfach die entpackten Inhalte des standardmäßigen Zend
  178. Framework Distributions Tarballs/Zipfiles.
  179. </para>
  180. <para>
  181. Sehen wir uns also einige Anwendungsfälle an. Im ersten Anwendungsfall, der
  182. <emphasis>Entwicklung</emphasis>, wollen wir die letzte Quellinstallation verwenden.
  183. Das kann getan werden indem man "latest" als Version übergibt:
  184. </para>
  185. <programlisting language="php"><![CDATA[
  186. $autoloader->setZfPath($path, 'latest');
  187. ]]></programlisting>
  188. <para>
  189. Im obigen Beispiel, verweist dass auf das Verzeichnis
  190. <filename>ZendFramework/1.9.2/library/</filename>; das kann geprüft werden indem man
  191. den Rückgabewert von <methodname>getZfPath()</methodname> prüft.
  192. </para>
  193. <para>
  194. In der zweiten Situation, der <emphasis>Qualitäts-Sicherung</emphasis>, wollen wir auf
  195. die Minor Release 1.8 verweisen, und die letzte Installation verwenden die wir für diese
  196. Release haben. Man kann das wie folgt durchführen:
  197. </para>
  198. <programlisting language="php"><![CDATA[
  199. $autoloader->setZfPath($path, '1.8');
  200. ]]></programlisting>
  201. <para>
  202. In diesem Fall wird das Verzeichnis <filename>ZendFramework/1.8.4PL1/library/</filename>
  203. gefunden.
  204. </para>
  205. <para>
  206. Im letzten Fall, für die <emphasis>Produktion</emphasis>, wollen wir uns auf eine
  207. spezielle Version festnageln -- 1.7.7, da dass vorhanden war als die Qualitäts Sicherung
  208. getestet hat, also vor unserem eigenen Release.
  209. </para>
  210. <programlisting language="php"><![CDATA[
  211. $autoloader->setZfPath($path, '1.7.7');
  212. ]]></programlisting>
  213. <para>
  214. Logischerweise wird das Verzeichnis <filename>ZendFramework/1.7.7/library/</filename>
  215. gefunden.
  216. </para>
  217. <para>
  218. Man diese Werte auch in der Konfigurationsdatei spezifizieren die man mit
  219. <filename>Zend_Application</filename> verwendet. Um das zu tun, muss man die folgenden
  220. Informationen spezifizieren:
  221. </para>
  222. <programlisting language="ini"><![CDATA[
  223. [production]
  224. autoloaderZfPath = "path/to/ZendFramework"
  225. autoloaderZfVersion = "1.7.7"
  226. [qa]
  227. autoloaderZfVersion = "1.8"
  228. [development]
  229. autoloaderZfVersion = "latest"
  230. ]]></programlisting>
  231. <para>
  232. Die unterschiedlichen Umgebungssektionen sind zu beachten, und die verschiedenen
  233. Versionen die in jeder Umgebung spezifiziert werden; diese Faktoren erlauben
  234. <classname>Zend_Application</classname> den Autoloader entsprechend zu konfigurieren.
  235. </para>
  236. <warning>
  237. <title>Implikationen für die Geschwindigkeit</title>
  238. <para>
  239. Für die beste Performance, sollte man dieses Feature entweder nicht verwenden, oder
  240. eine spezielle Zend Framework Version spezifizieren (z.B. nicht "latest", eine Major
  241. Revision wie "1", oder eine Minor Revision wie "1.8"). Andernfalls muss der
  242. Autoloader die angebotenen Pfade nach Verzeichnissen suchen welche diesem Kriterium
  243. entsprechen -- manchmal eine teure Operation die für jede Anfrage durchgeführt wird.
  244. </para>
  245. </warning>
  246. </sect2>
  247. <sect2 id="zend.loader.autoloader.interface">
  248. <title>Das Autoloader Interface</title>
  249. <para>
  250. Neben der Möglichkeit eigene Callbacks als Autoloader zu spezifizieren, definiert
  251. Zend Framework auch ein Interface für Autoloading Klassen,
  252. <classname>Zend_Loader_Autoloader_Interface</classname>, das implementiert werden kann:
  253. </para>
  254. <programlisting language="php"><![CDATA[
  255. interface Zend_Loader_Autoloader_Interface
  256. {
  257. public function autoload($class);
  258. }
  259. ]]></programlisting>
  260. <para>
  261. Wenn das Interface verwendet wird, kann man einfach eine Klasseninstanz an
  262. <classname>Zend_Loader_Autoloader</classname>'s
  263. <methodname>pushAutoloader()</methodname> und
  264. <methodname>unshiftAutoloader()</methodname> Methoden übergeben:
  265. </para>
  266. <programlisting language="php"><![CDATA[
  267. // Angenommen Foo_Autoloader implementiert Zend_Loader_Autoloader_Interface:
  268. $foo = new Foo_Autoloader();
  269. $autoloader->pushAutoloader($foo, 'Foo_');
  270. ]]></programlisting>
  271. </sect2>
  272. <sect2 id="zend.loader.autoloader.reference">
  273. <title>Autoloader Referenz</title>
  274. <para>
  275. Anbei kann ein Wegweiser für die Methoden gefunden werden die in
  276. <classname>Zend_Loader_Autoloader</classname> vorhanden sind.
  277. </para>
  278. <table id="zend.loader.autoloader.reference.api">
  279. <title>Zend_Loader_Autoloader Methoden</title>
  280. <tgroup cols="4">
  281. <thead>
  282. <row>
  283. <entry>Methode</entry>
  284. <entry>Rückgabewert</entry>
  285. <entry>Parameter</entry>
  286. <entry>Beschreibung</entry>
  287. </row>
  288. </thead>
  289. <tbody>
  290. <row>
  291. <entry><methodname>getInstance()</methodname></entry>
  292. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  293. <entry>N/A</entry>
  294. <entry><para>
  295. empfängt die Singleton Instanz von
  296. <classname>Zend_Loader_Autoloader</classname>. Beim ersten Empfang
  297. registriert sich diese selbst bei <code>spl_autoload</code>. Diese
  298. Methode ist statisch.
  299. </para></entry>
  300. </row>
  301. <row>
  302. <entry><methodname>resetInstance()</methodname></entry>
  303. <entry><code>void</code></entry>
  304. <entry>N/A</entry>
  305. <entry><para>
  306. Resetiert den Status der Singleton Instanz von
  307. <classname>Zend_Loader_Autoloader</classname> zu dem originalen Status,
  308. de-registriert alle Autoloader Callbacks und alle registrierten
  309. Namespaces.
  310. </para></entry>
  311. </row>
  312. <row>
  313. <entry><methodname>autoload($class)</methodname></entry>
  314. <entry><code>string|false</code></entry>
  315. <entry><itemizedlist>
  316. <listitem><para>
  317. <varname>$class</varname>, <emphasis>Benötigt</emphasis>.
  318. Der String eines Klassennamens der geladen werden soll.
  319. </para></listitem>
  320. </itemizedlist></entry>
  321. <entry><para>
  322. Versucht einen Klassennamen zu einer Datei aufzulösen und diese zu
  323. laden.
  324. </para></entry>
  325. </row>
  326. <row>
  327. <entry><methodname>setDefaultAutoloader($callback)</methodname></entry>
  328. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  329. <entry><itemizedlist>
  330. <listitem><para>
  331. <varname>$callback</varname>, <emphasis>Benötigt</emphasis>.
  332. </para></listitem>
  333. </itemizedlist></entry>
  334. <entry><para>
  335. Spezifiziert einen alternativen <acronym>PHP</acronym> Callback der für
  336. die standardmäßige Autoloader Implementation verwendet werden soll.
  337. </para></entry>
  338. </row>
  339. <row>
  340. <entry><methodname>getDefaultAutoloader()</methodname></entry>
  341. <entry><code>callback</code></entry>
  342. <entry>N/A</entry>
  343. <entry><para>
  344. Empfängt die standardmäßige Autoloader Implementation; standardmäßig
  345. ist das <methodname>Zend_Loader::loadClass()</methodname>.
  346. </para></entry>
  347. </row>
  348. <row>
  349. <entry><methodname>setAutoloaders(array $autoloaders)</methodname></entry>
  350. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  351. <entry><itemizedlist>
  352. <listitem><para>
  353. <varname>$autoloaders</varname>, <emphasis>Benötigt</emphasis>.
  354. </para></listitem>
  355. </itemizedlist></entry>
  356. <entry><para>
  357. Setzt eine Liste von konkreten Autoloadern für deren Verwendung in den
  358. Autoloader Stack. Jedes Element im Autoloader Array muß ein
  359. <acronym>PHP</acronym> Callback sein.
  360. </para></entry>
  361. </row>
  362. <row>
  363. <entry><methodname>getAutoloaders()</methodname></entry>
  364. <entry><type>Array</type></entry>
  365. <entry>N/A</entry>
  366. <entry><para>
  367. Empfängt den internen Autoloader Stack.
  368. </para></entry>
  369. </row>
  370. <row>
  371. <entry><methodname>getNamespaceAutoloaders($namespace)</methodname></entry>
  372. <entry><type>Array</type></entry>
  373. <entry><itemizedlist>
  374. <listitem><para>
  375. <varname>$namespace</varname>, <emphasis>Benötigt</emphasis>
  376. </para></listitem>
  377. </itemizedlist></entry>
  378. <entry><para>
  379. Holt alle Autoloader die registriert wurden um mit einem spezifischen
  380. Namespace geladen zu werden.
  381. </para></entry>
  382. </row>
  383. <row>
  384. <entry><methodname>registerNamespace($namespace)</methodname></entry>
  385. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  386. <entry><itemizedlist>
  387. <listitem><para>
  388. <varname>$namespace</varname>, <emphasis>Benötigt</emphasis>.
  389. </para></listitem>
  390. </itemizedlist></entry>
  391. <entry><para>
  392. Registriert ein oder mehrere Namespaces mit dem standardmäßigen
  393. Autoloader. Wenn <varname>$namespace</varname> ein String ist,
  394. registriert er diesen Namespace; wenn er ein Array von Strings ist,
  395. registriert er jeden als Namespace.
  396. </para></entry>
  397. </row>
  398. <row>
  399. <entry><methodname>unregisterNamespace($namespace)</methodname></entry>
  400. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  401. <entry><itemizedlist>
  402. <listitem><para>
  403. <varname>$namespace</varname>, <emphasis>Benötigt</emphasis>.
  404. </para></listitem>
  405. </itemizedlist></entry>
  406. <entry><para>
  407. De-Registriert ein oder mehrere Namespaces vom standardmäßigen
  408. Autoloader. Wenn <varname>$namespace</varname> ein String ist,
  409. de-registriert er diesen Namespace; wenn er ein Array von Strings ist,
  410. de-registriert er jeden davon als Namespace.
  411. </para></entry>
  412. </row>
  413. <row>
  414. <entry><methodname>getRegisteredNamespace()</methodname></entry>
  415. <entry><type>Array</type></entry>
  416. <entry>N/A</entry>
  417. <entry><para>
  418. Gibt ein Array aller Namespaces zurück die mit dem standardmäßigen
  419. Autoloader registriert sind.
  420. </para></entry>
  421. </row>
  422. <row>
  423. <entry>
  424. <methodname>suppressNotFoundWarnings($flag = null)</methodname>
  425. </entry>
  426. <entry><code>boolean|Zend_Loader_Autoloader</code></entry>
  427. <entry><itemizedlist>
  428. <listitem><para>
  429. <varname>$flag</varname>, <emphasis>Optional</emphasis>.
  430. </para></listitem>
  431. </itemizedlist></entry>
  432. <entry><para>
  433. Setzt oder Empfängt den Wert des Flags das verwendet wird um anzuzeigen
  434. ob die standardmäßige Autoloader Implementation "file not found"
  435. Warnungen unterdrücken soll oder nicht. Wenn keine Argumente oder ein
  436. null Wert übergeben wird, wird ein Boolscher Wert zurückgegeben der den
  437. Status des Flags anzeigt; wenn ein Boolean übergeben wurde, wird das
  438. Flag auf den Wert gesetzt und die Autoloader Instanz wird zurückgegeben
  439. (um die Verkettung von Methoden zu erlauben).
  440. </para></entry>
  441. </row>
  442. <row>
  443. <entry><methodname>setFallbackAutoloader($flag)</methodname></entry>
  444. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  445. <entry><itemizedlist>
  446. <listitem><para>
  447. <varname>$flag</varname>, <emphasis>Benötigt</emphasis>.
  448. </para></listitem>
  449. </itemizedlist></entry>
  450. <entry><para>
  451. Setzt den Wert des Flags das verwendet wird um anzuzeigen ob der
  452. standardmäßige Autoloader als Fallback, oder Catch-All Autoloader
  453. für alle Namespaces verwendet werden soll.
  454. </para></entry>
  455. </row>
  456. <row>
  457. <entry><methodname>isFallbackAutoloader()</methodname></entry>
  458. <entry><type>Boolean</type></entry>
  459. <entry>N/A</entry>
  460. <entry><para>
  461. Empfängt den Wert des Flags das verwendet wird um anzuzeigen ob der
  462. standardmäßige Autoloader als Fallback, oder Catch-All Autoloader
  463. für alle Namespaces verwendet wird. Standardmäßig ist er false.
  464. </para></entry>
  465. </row>
  466. <row>
  467. <entry><methodname>getClassAutoloaders($class)</methodname></entry>
  468. <entry><type>Array</type></entry>
  469. <entry><itemizedlist>
  470. <listitem><para>
  471. <varname>$class</varname>, <emphasis>Benötigt</emphasis>.
  472. </para></listitem>
  473. </itemizedlist></entry>
  474. <entry><para>
  475. Gibt eine Liste von Namespaced Autoloadern zurück die der angegebenen
  476. Klasse potentiell entsprechen. Wenn keine passt, werden alle globalen
  477. (nicht ge-namespaceten Autoloader) zurückgegeben.
  478. </para></entry>
  479. </row>
  480. <row>
  481. <entry>
  482. <methodname>unshiftAutoloader($callback, $namespace = '')</methodname>
  483. </entry>
  484. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  485. <entry><itemizedlist>
  486. <listitem><para>
  487. <varname>$callback</varname>, <emphasis>Benötigt</emphasis>.
  488. Ein gültiger <acronym>PHP</acronym> Callback.
  489. </para></listitem>
  490. <listitem><para>
  491. <varname>$namespace</varname>, <emphasis>Optional</emphasis>.
  492. Ein String der einen Klassenpräfix Namespace repräsentiert.
  493. </para></listitem>
  494. </itemizedlist></entry>
  495. <entry><para>
  496. Fügt eine konkrete Autoloader Implementation an den Anfang des
  497. Autoloader Stacks hinzu. Wenn ein Namespace angegeben wird, wird dieser
  498. Namespace verwendet um optimistischerweise zu passen; andernfalls wird
  499. angenommen das der Autoloader ein globaler Autoloader ist.
  500. </para></entry>
  501. </row>
  502. <row>
  503. <entry>
  504. <methodname>pushAutoloader($callback, $namespace = '')</methodname>
  505. </entry>
  506. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  507. <entry><itemizedlist>
  508. <listitem><para>
  509. <varname>$callback</varname>, <emphasis>Benötigt</emphasis>.
  510. Ein gültiger <acronym>PHP</acronym> Callback
  511. </para></listitem>
  512. <listitem><para>
  513. <varname>$namespace</varname>, <emphasis>Optional</emphasis>.
  514. Ein String der einen Klassenpräfix Namespace repräsentiert.
  515. </para></listitem>
  516. </itemizedlist></entry>
  517. <entry><para>
  518. Fügt eine konkrete Autoloader Implementation an das Ende des internen
  519. Autoloader Stacks hinzu. Wenn ein Namespace angegeben wird, wird dieser
  520. Namespace verwendet um optimistischerweise zu passen; andernfalls wird
  521. angenommen das der Autoloader ein globaler Autoloader ist.
  522. </para></entry>
  523. </row>
  524. <row>
  525. <entry>
  526. <methodname>removeAutoloader($callback, $namespace = '')</methodname>
  527. </entry>
  528. <entry><classname>Zend_Loader_Autoloader</classname></entry>
  529. <entry><itemizedlist>
  530. <listitem><para>
  531. <varname>$callback</varname>, <emphasis>Benötigt</emphasis>.
  532. Ein gültiger <acronym>PHP</acronym> Callback
  533. </para></listitem>
  534. <listitem><para>
  535. <varname>$namespace</varname>, <emphasis>Optional</emphasis>.
  536. Ein String der einen Klassenpräfix Namespace repräsentiert oder ein
  537. Array von Namespace Strings.
  538. </para></listitem>
  539. </itemizedlist></entry>
  540. <entry><para>
  541. Entfernt eine konkrete Autoloader Implementation vom internen Autoloader
  542. Stack. Wenn ein Namespace oder mehrere Namespaces angegeben werden, wird
  543. der Callback nur vom angegebenen Namespace oder den angegebenen
  544. Namespaces entfernt.
  545. </para></entry>
  546. </row>
  547. </tbody>
  548. </tgroup>
  549. </table>
  550. </sect2>
  551. </sect1>