[MANUAL] English:
[zend.git] / documentation / manual / pl / module_specs / Zend_View-Abstract.xml
blob59774e8aaf33c2dc2242fde635b79620efdac4c6
1 <sect1 id="zend.view.abstract">
2     <title>Zend_View_Abstract</title>
4     <para>
5         Klasa <code>Zend_View_Abstract</code> jest klasą bazową w oparciu o
6         którą zbudowana jest klasa <code>Zend_View</code>; Klasa
7         <code>Zend_View</code> po prostu rozszerza ją i deklaruje implementację
8         metody <code>_run()</code> (która jest wywoływana przez metodę
9         <code>render()</code>).
10     </para>
12     <para>
13         Wielu programistów potrzebuje rozszerzyć obiekt
14         <code>Zend_View_Abstract</code> aby dodać własną funkcjonalność i
15         nieuniknione jest że napotykają problemy dotyczące projektu klasy, która
16         posiada wiele prywatnych zmiennych. Ten dokument ma wyjaśnić jakie
17         przesłanki stały za decyzjami podjętymi podczas projektowania komponentu.
18     </para>
20     <para>
21         <code>Zend_View</code> jest czymś w rodzaju systemu szablonów
22         używającego natywnej składni PHP. W rezultacie możliwe jest użycie w
23         skryptach widoków kodu PHP, a dodatkowo dziedziczą one zakres
24         wywołującego je obiektu.
25     </para>
27     <para>
28         Dlatego ten drugi punkt jest tak ważny dla decyzji podejmowanych
29         podczas projektowania. Wewnętrznie metoda <code>Zend_View::_run()</code>
30         wygląda tak:
31     </para>
33     <programlisting role="php"><![CDATA[
34 protected function _run()
36     include func_get_arg(0);
38 ]]>
39     </programlisting>
41     <para>
42         Skrypty widoków mają dostęp do obecnego obiektu (<code>$this</code>),
43         <emphasis>i wszystkich metod oraz zmiennych tego obiektu</emphasis>.
44         Z tego względu, że wiele operacji zależy od zmiennych prywatnych,
45         mogłoby to spowodować problem: skrypty widoków mogłyby
46         wywołać te metody lub bezpośrednio zmodyfikować krytyczne zmienne.
47         Wobraź sobie skrypt nadpisujący w niezamierzony sposób zmienną
48         <code>$_path</code> lub <code>$_file</code> -- wszystkie następne
49         wywołania metody <code>render()</code> lub helperów widoków przestałyby
50         działać!
51     </para>
53     <para>
54         Na szczęście w PHP 5 może to być rozwiązane dzięki deklaracjom
55         widoczności: prywatne zmienne nie są dostępne przez obiekty
56         rozszerzające daną klasę. Zostało to użyte w obecnym projekcie: z tego
57         względu, że klasa <code>Zend_View</code> <emphasis>rozszerza</emphasis>
58         klasę <code>Zend_View_Abstract</code>, skrypty widoku są ograniczone
59         tylko do metod i zmiennych chronionych oraz publicznych obiektu
60         <code>Zend_View_Abstract</code> -- efektywnie ograniczając akcje jakie
61         można przeprowadzić i pozwalając nam na zabezpiecznie krytycznych
62         obszarów przed nadużyciami w skryptach widoków.
63     </para>
64 </sect1>