[ZF-10089] Zend_Log
[zend.git] / documentation / manual / pl / tutorials / autoloading-resources.xml
blobe03576641ca6193e89fe0217f54409602617c06e
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 19782 -->
3 <!-- Reviewed: no -->
4 <sect1 id="learning.autoloading.resources">
5     <title>Automatyczne ładowanie zasobów</title>
7     <para>
8         Często, podczas tworzenia aplikacji, zachowanie zalecanego przez Zend Framework standardu
9         dotyczącego utrzymania stosunku 1:1 pomiędzy klasami a plikami jest trudne bądź niekorzystne
10         z punktu widzenia wydajności. To oznacza, że pliki z klasami nie zostaną odnalezione przez
11         autoloader.
12     </para>
14     <para>
15         Zgodnie z <link linkend="learning.autoloading.design">celami autoloadera</link> a zwłaszcza
16         z ostatnim punktem, powyższa sytuacja jest obsługiwana przez autoloader Zend Framework
17         poprzez <classname>Zend_Loader_Autoloader_Resource</classname>.
18     </para>
20     <para>
21         Zasób to jedynie nazwa odpowiadająca przestrzeni nazw komponentu (dołączona do przestrzeni
22         nazw autoloadera) wraz ze ścieżką (relatywnie do ścieżki bazowej autoloadera). W praktyce
23         można użyć następującego kodu:
24     </para>
26     <programlisting language="php"><![CDATA[
27 $loader = new Zend_Application_Module_Autoloader(array(
28     'namespace' => 'Blog',
29     'basePath'  => APPLICATION_PATH . '/modules/blog',
30 ));
31 ]]></programlisting>
33     <para>
34         Po włączeniu autoloadera należy "poinformować" go o typach zasobów, które powinien dołączać.
35         Są to, po prostu, pary względnych ścieżek oraz prefiksów.
36     </para>
38     <para>
39         Jako przykład może posłużyć następujące drzewo katalogów:
40     </para>
42     <programlisting language="text"><![CDATA[
43 sciezka/do/zasobow/
44 |-- forms/
45 |   `-- Guestbook.php        // Foo_Form_Guestbook
46 |-- models/
47 |   |-- DbTable/
48 |   |   `-- Guestbook.php    // Foo_Model_DbTable_Guestbook
49 |   |-- Guestbook.php        // Foo_Model_Guestbook
50 |   `-- GuestbookMapper.php  // Foo_Model_GuestbookMapper
51 ]]></programlisting>
53     <para>
54         Pierwszym krokiem jest utworzenie autoloadera zasobów:
55     </para>
57     <programlisting language="php"><![CDATA[
58 $loader = new Zend_Loader_Autoloader_Resource(array(
59     'basePath'  => 'sciezka/do/zasobow/',
60     'namespace' => 'Foo',
61 ));
62 ]]></programlisting>
64     <para>
65         Następnie należy zdefiniować typy zasobów.
66         <methodname>Zend_Loader_Autoloader_Resourse::addResourceType()</methodname> przyjmuje trzy
67         argumenty: typ zasobu (dowolny łańcuch znaków), ścieżka relatywna do
68         ścieżki bazowej autoloadera, w której zasób się znajduje oraz prefiks używany przez dany typ
69         zasobu. W powyższym przykładzie istnieją trzy rodzaje zasobów: formularze (w katalogu
70         "forms" z prefiksem "Form"), modele (w katalogu "models" z prefiksem "Model") oraz modele
71         tabeli bazy danych (w katalogu "<filename>models/DbTable</filename>" z prefiksem
72         "<classname>Model_DbTable</classname>"). Następujący przykład pokazuje sposób ich
73         definiowania:
74     </para>
76     <programlisting language="php"><![CDATA[
77 $loader->addResourceType('form', 'forms', 'Form')
78        ->addResourceType('model', 'models', 'Model')
79        ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');
80 ]]></programlisting>
82     <para>
83         Po zdefiniowaniu, można używać tych klas bez ręcznego dołączania:
84     </para>
86     <programlisting language="php"><![CDATA[
87 $form      = new Foo_Form_Guestbook();
88 $guestbook = new Foo_Model_Guestbook();
89 ]]></programlisting>
91     <note>
92         <title>automatyczne ładowanie zasobu modułu</title>
94         <para>
95             Implementacja wzorca projektowego <acronym>MVC</acronym> w Zend Framework zachęca do
96             używania modułów, które są mini-aplikacjami w ramach tworzonego programu. Moduły
97             przeważnie posiadają wiele typów zasobów a Zend Framework nawet 
98             <link linkend="project-structure.filesystem">zaleca standardową strukturę katalogów
99             dla modułu</link>. Autoloader zasobów staje się bardzo przydatny w tym kontekście.
100             Przez to, jeśli umieści się plik z klasą bootstrap pochodną do
101             <classname>Zend_Application_Module_Bootstrap</classname> to autoloader zostanie
102             domyślnie włączony. Aby uzyskać więcej informacji należy zapoznać się z 
103             <link linkend="zend.loader.autoloader-resource.module"> dokumentacją
104             Zend_Loader_Autoloader_Module</link>.
105         </para>
106     </note>
107 </sect1>