2
0

Zend_Loader-Autoloader.xml 36 KB

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