Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosty parser szablonów, Dlczego wiecznie array?
blind fish
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.08.2004

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


No więc piszę (albo raczej próbuję) napisac prosty parser szablonów.. Oto jego prosty kod:
  1. <?
  2. class szablon {
  3. //start class szablon
  4. var $nieprzetworzony;
  5. var $nazwa;
  6. var $wartosc;
  7. function laduj($plik) {
  8. //start laduj()
  9. $this->nieprzetworzony = @file($plik);
  10. //koniec laduj()
  11. }
  12. function dodaj($nazwa, $wartosc) {
  13. //start dodaj()
  14. $this->nazwa[] .= &#092;"{\".$nazwa.\"}\";
  15. $this->wartosc[] .= $wartosc;
  16. //koniec dodaj()
  17. }
  18. function pokaz() {
  19. //start pokaz()
  20. return str_replace($this->nazwa, $this->wartosc, $this->nieprzetworzony);
  21. //koniec pokaz
  22. }
  23. //koniec class szablon
  24. }
  25. ?>

Ładuje plik, dodaję opcję i pokazuję to w prosty sposób:
  1. <?
  2. require(&#092;"dd.php\");
  3. $tpl = new szablon;
  4. $tpl->laduj(&#092;"index.tpl\");
  5. $tpl->dodaj(&#092;"sex\", \"male\");
  6. echo $tpl->pokaz();
  7. ?>

I otórz jedyne co mi się pokazuje to zamiast opcji {sex} podmienionej na "male" widze tylko "Array". Dlaczego i jak to ominąć by mi wszystko pokazywało ok?

Ten post edytował blind fish 29.10.2004, 23:35:07


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Vengeance
post
Post #2





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


  1. <?php
  2.  
  3. class Szablon
  4. {
  5.  var $blocks;
  6.  
  7.  function Szablon()
  8.  {
  9. $this->blocks = array();
  10.  }
  11.  
  12.  function assign($key, $value)
  13.  {
  14. $this->blocks[$key] = $value;
  15.  }
  16.  
  17.  function fetch($filename)
  18.  {
  19. if(!file_exists($filename))
  20.  die('Plik z szablonem ('.$filename.') nie istnieje');
  21. $read = join('', file($filename));
  22. foreach($this->blocks as $key => $value)
  23. {
  24.  $read = str_replace('{'.$key.'}', $value, $read);
  25. }
  26. return $read;
  27.  }
  28. }
  29.  
  30. ?>


i porownaj sobie co masz zle.


--------------------
Go to the top of the page
+Quote Post
blind fish
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.08.2004

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


Odkryłem że nie diała gdyż w zły sposób ładuje plik tongue.gif Thx, nie znałem funkcji join(), choć zanim zobaczyłem twoją odpowiedź zastosowałem impode() smile.gif Ale jak zauważyłem to tylko alias dla funkcji dla imlode tongue.gif

Ten post edytował blind fish 30.10.2004, 00:26:53


--------------------
Go to the top of the page
+Quote Post
MoD
post
Post #4





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

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


Zawsze można jeszcze użyć file_get_contents, wtedy odpuścisz sobie łączenia tablicy.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 01:52