![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 25.01.2009 Skąd: Łódź Ostrzeżenie: (0%)
|
Witam!
Ostatnio uczyłm się programowania obiektowego. Teraz chciał zrobić coś własneg i zaczeło mi wychodzić coś jak system szablonów. Mam: index.php
Kontroler/index.php
Widok/index.php
I teraz w czym problem... Wyświetla mi się strona, ale tylko ze znaczkami HTML z Widok/index.php, a nie ma w nim danych z Kontroler/index.php. Gdy zamiast $strona -> plik('index.php'); użyje funkcji include to działa dobrze, ale ja zamiast include chce mieć jakąś funkcję. |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%)
|
W widok/index.php zmień nazwę zmiennej $strona na $this i ustaw sobie jeszcze error_reporting na E_ALL
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 25.01.2009 Skąd: Łódź Ostrzeżenie: (0%)
|
Dzięki, teraz działa!
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 30 Dołączył: 5.05.2007 Skąd: Mannheim Ostrzeżenie: (0%)
|
Witam !
Sprobuj moze troche innego rozwiazania Kod <? class strona { public $template_vars = array(); public function wpisz($vars) { if (is_string($vars)) { $this->template_vars[$vars] = @func_get_arg(1); } elseif (is_array($vars)) { foreach ($vars as $key => $val) { $this->template_vars[$key] = $val; } } } public function plik($jaki) { ob_start(); include('Widok/'.$jaki); $res = ob_get_clean(); return $res; } public function __get($a){ return $this->template_vars[$a]; } public function __set($nazwa, $wartosc){ $this->template_vars[nazwa] = $wartosc; } } $strona = new strona(); //przypisujesz zmienne $strona -> wpisz('nazwa','Moja strona'); $strona -> wpisz('tekst','Przykladowy tekst'); $strona->test = "jakis tekst"; //albo $vars = array('nazwa'=>'Moja strona','tekst'=>'Przykladowy tekst','test'=>'jakis tekst'); $strona -> wpisz($vars); echo $strona -> plik('index.php'); ?> <html> <head> <title><?php echo $this->nazwa; ?></title> </head> <body> <i><?php echo $this->tekst; ?></i> <i><?php echo $this->test; ?></i> <br /> </body> </html> Jest to typowe rozwiazanie systemiku templatow ( Serce Zend_Views bazuje na takim rozwizaniu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) . Pozwoli Ci to na troche wieksza elastycznosc . Pozdrawiam |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 25.01.2009 Skąd: Łódź Ostrzeżenie: (0%)
|
Dzięki za inne rozwiązanie, ale ja tylko zrobiłem to do lepszego poznania PHP.
Jak będę potrzebował to napewno skorzystam... |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 17 Dołączył: 8.11.2008 Skąd: Libiąż Ostrzeżenie: (0%)
|
W takim wypadku lepiej skorzystać z gotowych systemów szablonów, bo przynajmniej wiesz, że są sprawne i nie musisz siedzieć nad ich implementacją.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 10:36 |