Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]Zend Framework $this-> w widoku.
rnest
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.04.2014

Ostrzeżenie: (0%)
-----


Pytanie do bardziej doświadczonych. Jak zaimplementować w widoku widoczność zmiennych z kontrolera. Nie chodzi mi o to jak przekazać wartość zmiennej z kontrolera do widoku, np. w Zendzie, ale jaki mechanizm to wykonuje i jak.
Interesuje mnie sam sposób w jaki jest to uzyskane. Interesuję się nieco szkieletami PHP od strony technicznej i nie bardzo wiem, jak jest ta wspaniała właściwość osiągalna.
Pewne elementy niezbędne do napisania własnego MVC już opanowałem, ale powyższa sztuka, jest dla mnie niewiadomą...
Proszę o wsparcie. Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Ogólnie zasada jest bardzo prosta. Tworzysz sobie klasę, w której implementujesz metody magiczne takie jak: __set, __get, __isset oraz __unset. Dodatkowo dodajesz metodę odpowiadającą za wyświetlanie, w której dołączasz plik z widokiem. Dzięki temu będziesz się mógł w nim odwoływać do zmiennych przy pomocy $this.

Cała sztuszka polega właśnie na odpowiednim zaimplementowaniu wcześniej wymienionych metod. To gdzie będziesz przetrzymywał zmienne, już zależy tylko od Ciebie. Zend na przykład zapisuje je bezpośrednio w obiekcie, z tym że nazwa zmiennej nie może mieć podkreślenia na początku (zabezpieczenie przed nadpisaniem pól obiektu):
  1. public function __set($key, $val)
  2. {
  3. if ('_' != substr($key, 0, 1)) {
  4. $this->$key = $val;
  5. return;
  6. }
  7.  
  8. require_once 'Zend/View/Exception.php';
  9. $e = new Zend_View_Exception('Setting private or protected class members is not allowed');
  10. $e->setView($this);
  11. throw $e;
  12. }


Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 08:07