creare una classe per gestire i template

vorrei creare una classe per un mini template engine [molto semplice] una volta creata la classe come inserisco gli oggetti? [ad esempio se la classe si chiama make_header] ho letto molto sul mio libro ma nn mi entra in testa come fare  :idiot: gianni potresti aiutarmi?

PS posso inserire include o altre variabili  o altro in un oggetto o sono obbligato a inserire determinati contenuti (una stringa o un intero ad esempio)?

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Forse ti stai ponendo la domanda sbagliata. Per prima cosa devi decidere cosa deve saper fare questo gestore di template, poi devi scegliere una "sintassi" da usare all'interno dei template.

Solo dopo aver fatto queste scelte potrai iniziare a pensare come realizzare la classe in questione (in realtà non è detto che debba essere una classe)

 :bye:

P.S.: perché non usare uno esistente?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

beh è un prova non è qualcosa che mi serve lo sto facendo per avvicinarmi all'OO di PHP cmq ho questo codice:

class template

{

   var $rvk_bg    = "";

   var $rvk_title   = "";

   var $rvk_style  = "";

   var $rvk_info    = "";

   var $copy       = " ";

   

   function __construct($bg, $title, $style, $info, $copy)

   {

      $this->template_info = $bg    ;

      $this->template_info = $title;

      $this->template_info = $style;

      $this->template_info = $info ;

      $this->template_info = $copy ;

   }

      function display()

      {

      

      echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';

      echo '<html xmlns="http://www.w3.org/1999/xhtml">';

      echo '<head>';

      echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />';

      echo '<title>', $title . $copy, '</title>';

      echo '</head>';

      echo '<body>';

      echo $style;

      echo '</body>';

      echo '</html>';

      

      }

   

}

   $template = new template("a","b","c","d","e");

   $template = display();

credo debba funzionare ma nn va mi dice

Fatal error: Call to undefined function display()

alla linea che contiene questo

   $template = display();

credo di aver sbagliato qualcosa ma nn capisco cosa :(

cmq Gianni

   var $rvk_bg    = "";

   var $rvk_title   = "";

   var $rvk_style  = "";

   var $rvk_info    = "";

   var $copy       = " ";

devo lasciarli vuoti o mettere qualche valore all'interno? e se li riempio rimarranno sempre quei valori o non verranno printati?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Se vuoi studiare l'OOP di PHP ti conviene partire da qualcosa di più semplice  :coolsmiley:

Comunque per richiamare una funzione di un oggetto (più propriamente detti "metodi") si usa questa sintassi:

$template->display();

Le variabili dichiarate nella classe possono essere inizializzate con dei valori ma successivamente possono essere modificati (cosa che avviene nel tuo caso nel costruttore)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ho dovuto modificarlo in questo modo:

class template

{

   

   function __construct($rvk_bg, $rvk_title, $rvk_style, $rvk_info, $rvk_copy){

   

      $this->template_bg    = $rvk_bg     ;

      $this->template_title = $rvk_title;

      $this->template_style = $rvk_style;

      $this->template_info  = $rvk_info ;

      $this->template_copy  = $rvk_copy ;

      

   }

   

   

      function display(){

      

      echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';

      echo '<html xmlns="http://www.w3.org/1999/xhtml">';

      echo '<head>';

      echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />';

      echo '<title>', $this->template_title, $this->template_copy , '</title>';

      echo '</head>';

      echo '<body>';

      echo $this->template_style;

      echo '</body>';

      echo '</html>';      

      }

   

}

   $template = new template("BACKGROUND","TITOLO","STILE.CSS","INFO","  - ( Powered by Revoke )");

   $template->display();

   

?>

per mostrare qualcosa altrimenti non mostra nulla (senza $this->)

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

credi che questo procedimento sia valido solo con versioni di PHP 5.0 o superiori , o anche con la 4?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

il costruttore chiamato con la parola riservata "__construct" è una novità di PHP 5. In PHP 4 il costruttore è un metodo che ha per nome il nome della classe (come avviene in C++). In PHP 5 questo stile è ancora supportato.

Per il resto è tutto compatibile con PHP 4

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

quindi solo il __construct mi frega la compatibilità con versioni precedenti alla 5?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
quindi solo il __construct mi frega la compatibilità con versioni precedenti alla 5?

Si

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

beh ho finito ora per modificare la struttura del programma basta editare un file .tpl

<?php

/*

+--------------------------------------------------------------------------+

|   Revoke 1.0                                                         |

|   ========================================                               | 

|   author: Trashofmasters                                                 |

|   Revoke soft.                                                           |                        

|                                                                          |

|   http://www.revoke.org                                                  |

|   ========================================                        |

+--------------------------------------------------------------------------+

|   ========================================                               |

|   this software is distribuited under                                    |                          

|   the GNU-GPL license                                                    |

|   ========================================                               |

|   for bug report and other please contact revoke soft.                   |

|                                                                          |

+--------------------------------------------------------------------------+

|                      REVOKE'S TEMPLATE ENGINE                            |

+--------------------------------------------------------------------------+

*/

   require_once("config/rvk_config.php");

   

   $query  = "SELECT * FROM `".$prefix."themes`";

   $select = mysql_query($query);

   $theme  = mysql_fetch_array($select);

   

   

      

class template

{   

   var $rvk_theme_dir = "";

   

   function __construct($rvk_title, $rvk_style, $rvk_copy,$rvk_theme_dir){

   

      $this->template_bg         = $rvk_bg;

      $this->template_title      = $rvk_title;

      $this->template_style       = $rvk_style;

      $this->template_info        = $rvk_info;

      $this->template_copy        = $rvk_copy;

      $this->template_header    = $rvk_header;      

      $this->template_theme_dir = $rvk_theme_dir;

      $this->template_cssname   = $template_theme_dir. '/' . $template_style .'.css.php';   

      

   }

   

      function display()

      {      

      require($this->template_theme_dir . '/wrapper.tpl');

      }

   

}

   $template = new template($theme['site_name'], $theme['theme_css'], " - ( Powered by Revoke )",$theme['theme_dir']);

   $template->display();

   

?>
risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

diciamo che per adesso serve a poco  ;)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

beh si :) ma basta modificare wrapper.tpl per editare la struttura di tutto il programma :) cmq non so se utilizzarla con il mio cms :dunno: oppure usare un file con 10  include  :o

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda