Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP Template
Forum PHP.pl > Forum > PHP
MMySlime
Witajcie,
ogólnie mówiąc mam problem myślowy.
System jest zrobiony na podstawie klasy użytkownika shinuexx: [klasa] Własna klasa do obsługi szablonów
Mam na myśli podmienianie {varów} na gotowy tekst (chyba dobrze to wyjaśniłem)
Jak by tu zrobić aby do mojego systemu szablonów dołączyć includowanie pliku?
CuteOne
Olać tego typu rozwiązania (gotowe autorskie klasy XYZ) i zastosować SMARTY, Twig lub PHPTal
zegarek84
np. w ten sposób:
  1. <?php
  2. namespace Z;
  3.  
  4. /**
  5.  * Description of \Z\View
  6.  *
  7.  * @author zegarek84
  8.  */
  9. class View {
  10. public $sPathFile='';
  11. public $aVar;
  12.  
  13. public function __construct() {
  14. }
  15. public function setTemplateFile($sPathFile) {
  16. $this->sPathFile = $sPathFile;
  17. }
  18. public function set($key, $var){
  19. $this->aVar[$key] = $var;
  20. }
  21. public function get($key){
  22. if(array_key_exists($key, $this->aVar))
  23. return $this->aVar[$key];
  24. return NULL;
  25. }
  26.  
  27. public function render(){
  28. if(!$this->sPathFile)
  29. return '';
  30. include $this->sPathFile;
  31. return $s;
  32. }
  33. }

to jest najprostszy przykład - zawsze możesz przejrzeć źródła jakiego kolwiek framworka - tutaj jest wykorzystany fakt, iż sam PHP jest świetnym systemem szablonów...
zawsze to możesz rozszerzyć... w inkludowanym pliku pobierasz wartość przez $this->get('zmienna'), jeśli nie istnieje zwróci Ci NULL, a NULL przy echo to pusty ciąg więc nie będzie błędów... niby można wyeksportować tablicę do zwykłych zmiennych w danym kontekście ale nie polecam tego...
MMySlime
@CuteOne: Ja napisałem swój system szablonów, tylko zaczerpnąłem z szablonu XYZ sposób na zmienianie {name} w Name
@zegarek84: Nie do końca o to mi chodziło, raczej o funkcję add_file która by dodawała do pliku przetworzoną zawartość pliku .php, no chyba że nie rozumiem idei działania ob_start etc.

-- EDIT --

Zegarku zwracam honor, po dłuższym kombinowaniu wypróbowałem z buforowaniem i wszystko działa pięknie, dzięki wielkie za pomoc wink.gif
zegarek84
Cytat(MMySlime @ 3.11.2012, 16:51:03 ) *
@zegarek84: Nie do końca o to mi chodziło, raczej o funkcję add_file która by dodawała do pliku przetworzoną zawartość pliku .php, no chyba że nie rozumiem idei działania ob_start etc.

pomijając ob_... to co do przetworzonej zawartości pliku np. w Zend z widoków była jakaś klasa, która na strumieniu odczytywała pliki .phtml (w zasadzie to są pliki .PHP) i np. zamieniała znaczniki <?= ... ?> na <?php echo ... ?> gdyby czasem na serwerze było wyłączone <?= ?> - nie chcę wprowadzać w błąd, to daaaawno temu było jak z grubsza przeglądałem źródła...

na to liczyłem, że sprawdzisz, gdyż nie chciało mi się tłumaczyć jak to dokładnie działa... samo buforowanie ob_.... może też służyć dla przykładu celem kompresji zawartości przez samo PHP i wiele więcej gdyż można tam podpiąć callbacka chyba na ob_start - nie chce mi się do manuala zaglądać ;p... zastosowań może być wiele gdyż to buforowanie można zagnieżdżać - wiem brzmi to nie logicznie ale jednak...

swoją drogą raz pisałem mini framwork ale tylko dlatego, że miałem zakaz stosowania jakiegokolwiek, a ponieważ to co miałem zrobić było już gotowe ale na zendzie to szybko se przeportowałem i na bardzo prostej zasadzie porobiłem kontrolery - a ten widok choć banalny to znacznie można go rozbudować i wykorzystać jako helpera widoku, jako layout itd.... fajnie jeszcze wygląda idea programowania zdarzeniowego z "odwróconym sterowaniem" tzn. gdy strona gotowa to ją wyświetlić a reszta może robić się dalej jak np. jakieś skomplikowane operacje na które nie koniecznie musimy czekać, jednak przy prostych stronkach to nie praktyczne gdyż komplikuje kod i sprawia, iż jest mniej czytelny...

w każdym bądź razie uważam, iż warto dłubać gdyż w ten sposób można poznać wiele ciekawych mechanizmów w dowolnych językach programowania - język to tylko narzędzie... heh, jak znajdę czas to se poćwiczę z C++ boost::asio ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.