Wprowadzenie do Zend Framework

     Nauka Zend Framework

    appendix

     Przewodnik po Zend Framework


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 21.3% Update 2011-11-16 - Revision 24356 - Version ZF 1.11.x

    75.5. Zend_View_Abstract

    Klasa Zend_View_Abstract jest klasą bazową w oparciu o którą zbudowana jest klasa Zend_View; Klasa Zend_View po prostu rozszerza ją i deklaruje implementację metody _run() (która jest wywoływana przez metodę render()).

    Wielu programistów potrzebuje rozszerzyć obiekt Zend_View_Abstract aby dodać własną funkcjonalność i nieuniknione jest że napotykają problemy dotyczące projektu klasy, która posiada wiele prywatnych zmiennych. Ten dokument ma wyjaśnić jakie przesłanki stały za decyzjami podjętymi podczas projektowania komponentu.

    Zend_View jest czymś w rodzaju systemu szablonów używającego natywnej składni PHP. W rezultacie możliwe jest użycie w skryptach widoków kodu PHP, a dodatkowo dziedziczą one zakres wywołującego je obiektu.

    Dlatego ten drugi punkt jest tak ważny dla decyzji podejmowanych podczas projektowania. Wewnętrznie metoda Zend_View::_run() wygląda tak:

    protected function _run()
    {
        include 
    func_get_arg(0);
    }

    Skrypty widoków mają dostęp do obecnego obiektu ($this), i wszystkich metod oraz zmiennych tego obiektu. Z tego względu, że wiele operacji zależy od zmiennych prywatnych, mogłoby to spowodować problem: skrypty widoków mogłyby wywołać te metody lub bezpośrednio zmodyfikować krytyczne zmienne. Wobraź sobie skrypt nadpisujący w niezamierzony sposób zmienną $_path lub $_file -- wszystkie następne wywołania metody render() lub helperów widoków przestałyby działać!

    Na szczęście w PHP 5 może to być rozwiązane dzięki deklaracjom widoczności: prywatne zmienne nie są dostępne przez obiekty rozszerzające daną klasę. Zostało to użyte w obecnym projekcie: z tego względu, że klasa Zend_View rozszerza klasę Zend_View_Abstract, skrypty widoku są ograniczone tylko do metod i zmiennych chronionych oraz publicznych obiektu Zend_View_Abstract -- efektywnie ograniczając akcje jakie można przeprowadzić i pozwalając nam na zabezpiecznie krytycznych obszarów przed nadużyciami w skryptach widoków.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...