Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obsługa szablonów.
Forum PHP.pl > Forum > Przedszkole
boosik01
Cześć. Wziąłem się za pisanie systemu szablonów (nie mówić mi tu o Smarty bo i tak go nie użyję bo jest on jak dla mnie zbyt dużą aplikacją a po drugie do nauki postanowiłem napisać własny tongue.gif .)

Ok do rzeczy mam taki kod class.temp.php:

  1. <?php
  2. class new_template
  3. {
  4. private $sTemplate; // Szablon
  5. private $sReplacement; // Zamienniki
  6.  
  7. public function __construct($rFile_name, $z, $na)
  8. {
  9. $this->file_name = $rFile_name ;
  10. $this->template = $sTemplate ;
  11. $this->replacement = $sReplacement ;
  12. $this->z = $z ;
  13. $this->na = $na ;
  14. }
  15.  
  16. public function read()
  17. {
  18. if(!empty($this->file_name)) ;
  19. if(!file_exists($this->file_name))
  20. {
  21. trigger_error(' Błąd. Nie ma takiego pliku. ') ;
  22. return true ;
  23. }
  24.  
  25. $this->template = @file($this->file_name) ;
  26. $this->template = imlode("", $this->template);
  27. }
  28.  
  29. public function add_replacement()
  30. {
  31. if(!empty($this->z))
  32. {
  33. $this->replacement[$this->z] = $this->na ;
  34. }
  35. }
  36.  
  37. public function display()
  38. {
  39. $this->out = $this->templates ;
  40. foreach($this->replacement as $a => $b)
  41. {
  42. $this->out = str_replace("{$a}", $b, $this->out) ;
  43. }
  44.  
  45. return $this->out ;
  46. }
  47. }
  48.  
  49. ?>
  50.  


Oraz w index.php:

  1. $szab = new new_template('templates/index.tpl', '{a}', $cos) ;
  2. echo($szab->display());


I wywala mi błąd związany z pętlą for:

Kod
Warning: Invalid argument supplied for foreach() in C:\WebServ\httpd\gra-obiektowo\classes\temp.class.php on line 40
mlawnik
Forum nie parser, a angielski przy programowaniu wypada znać.
wookieb
To nie ma nic wspólnego z OOP. przenoszę.
boosik01
A co to jest jak nie OOP ? Może strukturalne ?
wookieb
Problemem nie jest organizacja obiektów ani coś z rodziny wzorców projektowych tylko strasznie niedbalstwo autora i brak umiejętności myślenia. Dlatego = przedszkole.
mortus
Błąd oznacza, że $this->replacement nie jest tablicą. Ogólnie to sporo jest do poprawienia: konstruktor i funkcja display() na pewno, poza tym kilkakrotnie niepotrzebnie dodatkowo przepisujesz zmienne, nigdzie nie używasz zmiennej prywatnej $sReplacement (poza bezsensownym przepisaniem w konstruktorze, w dodatku źle napisanym) i funkcji add_replacement().
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.