Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]_autoload i klasa szablonu, łączenie
--Woody--
post
Post #1





Goście







Witam,
Szukałem na forum, ale jakoś nie umiem wykorzystać tego co znalazłem. Więc do rzeczy. Mam sobie klase szablonu template.php - standard. Wywołuje ja w indeksie łącząc z plikiem szablonu html i css. Wszystko ładnie działa, jednak w katalogu class koło klasy template mam jeszcze kilka klass, które wykorzystuje dołączając je żmudnie ręcznie. Chciałem sobie to zautomatyzować próbując wykorzystać __autoload i dopisując go do klasy template. Jednak za nic nie chce ze mną to współpracować. Oczywiście manual na temat __autoload przeczytałem i nic mi to nie dało, przykład z manuala działa ale już próba połączenia z moim template niestety nie. Może mi ktoś pomóc i łopatologicznie wytłumaczyć jak to ogarnąć lub podsunąć jakiś przykład, naprowadzić na dobrą drogę - cokolwiek.

Pozdrawiam
Woody
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
watas
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.06.2009

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


hmm wydawalo mi sie to dos logiczne takie rozdzielanie kodu jesli jednak namieszalem chetnie dowiem sie jak ma to wygladac poprawnie.
index.php
  1. include 'lib/templ.php';
  2.  
  3. $page = new template('tpl/szablon.tpl');
  4. $page->load('classes/');
  5. $page->add('lang', 'pl');
  6. $page->add('title', 'FICC HOME PAGE');
  7. $page->add('charset', 'iso-8859-2');
  8. $page->add('stylesheet', 'tpl/style.css');
  9. $page->add('footer', 'Copyright ? 2011 FICC');
  10. $page->add('menu', menu()); // tak probuje zastosowac funkcje w szablonie i owszem dziala ale nie tam gdzie trzeba :-)

plik szablon.tpl
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="{lang}" xml:lang="{lang}">
  3. <title>{title}</title>
  4. <link rel="stylesheet" href="{stylesheet}" type="text/css" />
  5. <meta http-equiv="Content-Type" content="text/html; {charset}" />
  6. </head>
  7. <div class="container">
  8. <div class="header">
  9. <div class="logo">{logo]</div>
  10. </div>
  11. <div class="menu">{menu}</div>
  12. <div class="cont">{cont}</div>
  13. <div class="footer">
  14. <div class="copyright">{footer}</div>
  15. </div>
  16. </div>
  17. </body>
  18. </html>

plik templ.php
  1. class template {
  2. var $tpl;
  3. var $dane;
  4.  
  5. function template ($name)
  6. {
  7. $this->tpl = implode('', file($name));
  8. $this->dane = Array();
  9. }
  10.  
  11. function add($name, $value = '')
  12. {
  13. if (is_array($name)) {
  14. $this->dane = array_merge($this->dane, $name);
  15. } else if (!empty($value)) {
  16. $this->dane[$name] = $value;
  17. }
  18. }
  19.  
  20. function execute() {
  21. return preg_replace('/{([^}]+)}/e', '$this->dane["\\1"]',$this->tpl);
  22. }
  23.  
  24. function load($class_name) {
  25. $files = new RecursiveIteratorIterator(
  26. new RecursiveDirectoryIterator($class_name),
  27. RecursiveIteratorIterator::CHILD_FIRST
  28. );
  29. foreach( $files as $path => $file ) {
  30. include_once($file);
  31. }
  32. }
  33. }

plik menu.class, cont.class, tylko funkcje do uzytku
  1. function menu() {
  2.  
  3. }

plik style.css standardowo ze stylami dla div i innych pierdol.

P.S dzis juz musze uciekac, niestety czas mnie goni i bede dopiero jutro, ale napewno sie odezwe. Z gory dziekuje za sugestie.

Pozdrawiam

Ten post edytował watas 12.12.2011, 15:34:54
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 08:40