Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z własnym systemem szablonów
kamilgeneral
post 5.05.2009, 13:41:09
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

  1. <?php
  2.  
  3.  class strona {
  4.  
  5.   public function wpisz($wpisuje, $gdzie)
  6.   {
  7.   $this -> $gdzie = $wpisuje;
  8.   }
  9.   
  10.   public function plik($jaki)
  11.   {
  12.   include('Widok/'.$jaki); 
  13.   }
  14.  }
  15.  
  16.  $strona = new strona;
  17.  
  18.  include('Kontroler/index.php');
  19.  
  20. ?>


Kontroler/index.php

  1. <?php
  2.  
  3.  $strona -> wpisz('Moja strona', 'nazwa');
  4.  $strona -> wpisz('Przykladowy tekst', 'tekst');
  5.  
  6.  $strona -> plik('index.php');
  7.  
  8. ?>


Widok/index.php
  1. <html>
  2. <head>
  3.  <title><?php echo $strona -> nazwa; ?></title>
  4. </head>
  5. <body>
  6.  <i><?php echo $strona -> tekst; ?></i>
  7.  <br />!
  8. </body>
  9. </html>


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ę.


--------------------
Go to the top of the page
+Quote Post
starach
post 5.05.2009, 14:10:25
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
Go to the top of the page
+Quote Post
kamilgeneral
post 5.05.2009, 14:24:40
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!


--------------------
Go to the top of the page
+Quote Post
zbig
post 5.05.2009, 14:59:46
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 smile.gif ) .
Pozwoli Ci to na troche wieksza elastycznosc .

Pozdrawiam


--------------------
Flash Flex PHP JAVA RED5 http://www.easyweb24.net
Go to the top of the page
+Quote Post
kamilgeneral
post 5.05.2009, 18:13:23
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...


--------------------
Go to the top of the page
+Quote Post
megawebmaster
post 5.05.2009, 21:33:44
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ą.
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 Wersja Lo-Fi Aktualny czas: 23.04.2024 - 07:58