J'utilise depuis très longtemps le système de templates vTemplate et depuis un bon moment j'ai un message qui m'indique qu'on ne pourra plus utiliser les Class de cette façon.
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP
J'ai essayé de modifier la classe et je n'y suis pas parvenu. Mes connaissances en php sont insuffisante.
Quelqu'un saurait modifier la Class pour que celle-ci soit adaptée au nouvelles conditions de php ?
Dans le cas ou se ne soit pas possible, quelqu'un aurait un système de Template aussi simple d'utilisation à recommander ?
Cordialement
Dernière version connue de la classe concernée
<?php
/*****************************************************************
* VIRTUAL-TEMPLATE
*
* Version : 1.3.3 Base Edition ( Octobre 2004 )
*
* Address : http://vtemplate.sourceforge.net
*
* Authors:
* + THIEBAUT Jean-Baptiste(J.Baptiste@leweby.com) - http://www.leweby.com .
* + CAMPANA François (grem@concept-w.net).
* Licence: GPL.
*
*
*
*
*****************************************************************/
if ( !isset($DEFINE_VTEMPLATE) ){
define("ALL",1);
define("VARTAG","{#"); // Tag d'ouverture des variables : vous pouvez changer ce paramètre.
define("VTEMPLATE_VERSION","1.3.3");
define("VTEMPLATE_TYPE","BA");
define("VTEMPLATE_BUILD","1");
class Err {
var $msg;
var $titre;
function error($errno,$arg="",$code=0,$disp=0){
// Gestion des erreurs
switch($errno){
case 1:
$this->titre="Erreur de session n° $code";
$this->msg = "La zone $arg est déjà ouverte.Avant d'ajouter une session sur cette zone, vous devez la fermer à l'aide de la fonction closeSession().<br>" ;
break;
case 2:
$this->titre="Erreur de session n° $code";
$this->msg = "Vous tentez de fermer une session de la zone $arg alors qu'aucune session pour cette zone n'existe.Pour ouvrir une session, utilisez la fonction addSession().<br>";
break;
case 3:
$this->titre="Erreur de session n° $code";
$var = $arg[1];
$zone = $arg[0];
$this->msg = "Vous essayez de valoriser la variable $var sans avoir créer de session de la zone $zone.Utilisez la fonction addSession() pour créer une session, puis setvar pour valoriser une variable.<br>";
break;
case 4:
$this->titre="Erreur de session n° $code";
$var = $arg[1];
$zone = $arg[0];
$this->msg = "La variable $var que vous souhaitez valoriser n'existe pas dans la zone $zone.<br>";
break;
case 5:
$this->titre="Erreur de parsing n° $code";
$this->msg = "Vous utilisez des caractère non autorisés pour déclarer vos zones.Vous pouvez utiliser tous les caractères à l'exception de \'{\' , \'#\' \'}\' et \'|\'.<br>";
break;
case 6:
$this->titre="Erreur de parsing n° $code";
$this->msg = "Vous ne pouvez pas utiliser le même nom ($arg)de zone plusieurs fois.<br>";
break;
case 7:
$this->titre="Erreur de parsing n° $code";
$this->msg = "Vous avez oublié de fermer la zone $arg.<br>";
break;
case 8:
$this->titre="Erreur de traitement n° $code";
$this->msg = "Le fichier template $arg est introuvable.<br>";
break;
case 9:
$this->titre="Erreur de traitement n° $code";
$this->msg = "Impossible d'ouvrir le fichier $arg.Vérifiez les droits de ce fichier.<br>";
break;
case 10:
$this->titre="Erreur de traitement n° $code";
$this->msg = "Impossible de lire le fichier template $arg.<br>";
break;
case 11:
$this->titre="Erreur de traitement n° $code";
$this->msg = "La zone $arg est introuvable.Vérifiez la syntaxe de cette zone.<br>";
break;
case 12:
$this->titre="Erreur de traitement n° $code";
$this->msg = "La variable $arg est introuvable .Vérifiez la syntaxe de la variable.<br>";
break;
case 13:
$this->titre="Erreur de traitement n° $code";
$this->msg = "L'identifiant de fichier spécifié n'existe pas.Vérifiez les fonctions Open() de votre script.<br>";
break;
case 14:
$this->titre="Erreur de traitement n° $code";
$var = $arg[1];
$file = $arg[0];
$this->msg = "La variable $var dans le fichier $file est introuvable.Vérifiez la syntaxe de la variable.<br>";
break;
case 15:
$this->titre="Erreur de traitement n° $code";
$var = $arg[2];
$zone = $arg[1];
$fichier = $arg[0];
$this->msg = "La variable $var dans la zone $zone du fichier $fichier est introuvable.Vérifiez la syntaxe de la variable et du nom de la zone.<br>";
break;
default:
$this->titre = "Erreur inconnue $code";
$this->msg = "Veuillez le rapporter aux auteurs de la classe.";
}
$this->titre .= ": <br>";
if ($disp){
$web = "Pour plus d'informations, consultez la <a href=\"http://www.virtual-solution.net/vtemplate/docs/debug-mod.php?version=".VTEMPLATE_VERSION."&build=".VTEMPLATE_BUILD."&type=".VTEMPLATE_TYPE."&error=$code\" target=\"_blank\">doc en ligne</a>";
echo "<font face=verdana size=2 color=red><u>$this->titre</u><i>$this->msg</i>$web<br><br></font>";
}
return -1;
}
// Fin classe
}
class Session extends err{
var $name; // Name of the session
var $globalvar = array(); // List of global variable of the session
var $varlist = array(); // List of vars in this session
var $subzone = array(); // list of sub-zone
var $temp; // Generated code for the current session
var $generated = NULL; // The final code
var $source; // Source code
var $used=0; // Indicates if the session contain used variable
var $stored; // Give the filename were is stored the session
function Session($name,$source,$stored){
$this->name = $name;
$this->source = $source;
$this->stored = $stored;
$this->parseVar();
}
function parseVar(){
// Récupération des noms des variables
$regle = "|".VARTAG."(.*)}|sU";
preg_match_all ($regle,$this->source,$var1);
// Création du tableau de variable à partir de la liste parsée.
$this->varlist=array_merge($this->varlist,$var1[1]);
return 1;
}
function init(){
if($this->used) return $this->error(1,array($this->stored,$this->name),"SESSION1",1);
// Reset generated code
$this->temp = $this->source;
$this->used = 1;
}
function closeSession(){
// Check if the zone has been used.
if(!$this->used) return $this->error(2,array($this->stored,$this->name),"SESSION2",1);
// Set Globals vars.
$this->generateCode();
$this->used=0;
return 1;
}
function reset(){
$this->used = 0;
$this->generated = NULL;
return 1;
}
function addSubZone(&$subzone){
$this->subzone[$subzone->name] = &$subzone;
return 1;
}
function setVar($varname,$value){
if (!$this->used) return $this->error(3,array($this->stored,$this->name,$varname),"SESSION3",1);
if (!in_array($varname,$this->varlist)) return $this->error(4,array($this->name,$varname),"SESSION4",1);
$regle = "(\\".VARTAG."$varname\})";
$this->temp = preg_replace($regle,$value,$this->temp);
return 1;
}
function dispVar(){
echo "Liste variables de $this->name:<br>";
foreach ( $this->varlist as $vars )
echo "$vars <br>";
}
function setGlobalVar($varname,$value){
$set = 0;
if (in_array($varname,$this->varlist)){
// Replace the var into this session
$this->globalvar[$varname]=$value;
$set = 1;
}
// Replace the var into sub zones
foreach(array_keys($this->subzone) as $subzone){
$set = $this->subzone[$subzone]->setGlobalVar($varname,$value) || $set;
}
return $set;
}
function replaceGlobalVar(){
if ( count($this->globalvar) )
foreach($this->globalvar as $varname => $value){
$regle = "(\\".VARTAG."$varname\})";
$this->temp = preg_replace($regle,$value,$this->temp);
}
}
function generateCode(){
if ($this->used == 0) return $this->generated;
// Replace global var.
if ( count($this->globalvar) ) $this->replaceGlobalVar();
// Replace all unused variable by ""
$regle = "|\\".VARTAG."([^}]*)\}|";
$this->temp = preg_replace($regle,"",$this->temp);
// Generate the subzone(s) code
if(count($this->subzone)){
foreach(array_keys($this->subzone) as $subzone){
$text = ($this->subzone[$subzone]->used) ? $this->subzone[$subzone]->generateCode() : $this->subzone[$subzone]->generated;
$this->temp = preg_replace("(\|$subzone\|)",$text,$this->temp);
$this->subzone[$subzone]->reset();
}
}
$this->generated .= $this->temp;
return $this->generated;
}
function inVarList($varname){
return in_array($varname,$this->varlist);
}
// Fin classe
}
class VTemplate_Private extends Err{
/****************************************
* Private Class. *
* ***************************************/
var $sources=array(); // Sources des zones issues de la premiere partie du parsing.
var $sessions=array(); // Tableau de sessions
var $v_global=array(); // Globla var array.
/****************************************************************
Parsing Functions for Template files. ( PF 1.0 )
****************************************************************/
function getNom($code){
// Retourne le premier nom de zone qu'il trouve dans le code
preg_match("(<!--VTP_([^()]+)-->)sU",$code,$reg);
// Tester la présence des caratère invalides dans le nom ( | et {});
if (@count(explode("|",$reg[1]))>1 || @count(explode("{",$reg[1]))>1 || @count(explode("}",$reg[1]))>1) exit($this->error(5,$reg[1],"PARSE1",1));
return @$reg[1];
}
function endTag($code,$nom){
// Renvoie TRUE(1) si le tag de fermeture est présent.
preg_match("(<!--/VTP_$nom-->)sU",$code,$reg);
return ($reg[0]!="<!--/VTP_$nom-->") ? 0 : 1;
}
function getSource($code,$nom,$type=0){
// Retourne le source de la zone de nom $nom
preg_match_all ("(<!--VTP_$nom-->(.*)<!--/VTP_$nom-->)sU",$code,$reg);
return $reg[$type][0];
}
function parseZone($code_source,$nom_zone="|root|"){
// Fonction récursive de parsing du fichier template
// Vérification que la zone n'existe pas
if (isset($this->sources[$nom_zone])) exit($this->error(6,$nom_zone,"PARSE2",1));
// Enregistrement du code source
$this->sources[$nom_zone]["source"]=$code_source;
// Rappel de la fonction pour chaque fils.
while($nom_fils=$this->getNom($this->sources[$nom_zone]["source"])){
// Vérification que le tag de fin est présent.
if (!$this->endTag($code_source,$nom_fils)) exit($this->error(7,$nom_fils,"PARSE3",1));
// Parse le fils
$this->parseZone($this->getSource($this->sources[$nom_zone]["source"],$nom_fils,1),$nom_fils);
// Enregistre le nom du fils dans la liste des fils
$this->sources[$nom_zone]["fils"][]=$nom_fils;
// Remplace le code du fils dans le source du père
$this->sources[$nom_zone]["source"]=str_replace(
$this->getSource($this->sources[$nom_zone]["source"],$nom_fils,0),
"|$nom_fils|",
$this->sources[$nom_zone]["source"]
);
// Teste si la zone $nom_fils n'existe pas plusieurs fois dans la zone $nom_zone
if (count(explode("|$nom_fils|",$this->sources[$nom_zone]["source"]))>2) exit($this->error(6,$nom_fils,"PARSE4",1));
}// fin While
return 1;
}
/****************************************************************
Session Management functions ( SMF 1.0 )
****************************************************************/
function createSession($handle,$zone = "|root|"){
// Create a new session of the zone
$this->sessions[$handle][$zone] = new Session($zone,$this->sources[$zone]["source"],$this->file_name[$handle]);
// Create sub-zone
if (@count($this->sources[$zone]["fils"])){
foreach($this->sources[$zone]["fils"] as $subzone){
$this->createSession($handle,$subzone);
$this->sessions[$handle][$zone]->addSubZone($this->sessions[$handle][$subzone]);
}
}
//end createSession
}
/****************************************************************
Global Variable Management Functions ( GVMF 1.0 )
****************************************************************/
function setGZone($handle,$zone,$var,$value){
// Define Global var for $zone and its sub-zone.
// Set global value to $zone vars.
return $this->sessions[$handle][$zone]->setGlobalVar($var,$value);
}
function setGFile($handle,$var,$value) {
return $this->sessions[$handle]["|root|"]->setGlobalVar($var,$value);
}
function setGAll($var,$value){
$declare = 0;
$this->v_global[$var]=$value;
if (is_array($this->sessions)){
foreach($this->sessions as $handle => $v){
$declare = $this->setGFile($handle,$var,$value) || $declare;
}
}
return $declare;
}
function setGOpened($handle){
// Set Global var into the opened file
foreach($this->v_global as $name => $val){
$this->setGFile($handle,$name,$val);
}
return 1;
}
// Fin VTemplate_Private
}
class VTemplate extends VTemplate_Private{
/****************************************
* var Class. *
* ***************************************/
/****************************************************************
Core Functions
*****************************************************************/
function Open($nomfichier){
// Ouverture d'un fichier source et retourne le handle de ce fichier
// Création du handle:
$handle = "{".count($this->sessions)."}" ;
// Récupération du source à parser
if (!@file_exists($nomfichier)) return $this->error(8,$nomfichier,"TTT1",1);
if (!$f_id=@fopen($nomfichier,"r")) return $this->error(9,$nomfichier,"TTT2",1);
if (!$source=@fread($f_id, filesize($nomfichier))) return $this->error(10,$nomfichier,"TTT3",1);
clearstatcache();
fclose($f_id);
// Store the filename
$this->file_name[$handle]=$nomfichier;
// Parse les zones
$this->parseZone($source);
// Création du tableau de session
$this->createSession($handle);
//Nettoyage des variables temporaires
$this->sources=NULL;
// Set global var.
$this->setGOpened($handle);
$this->addSession($handle);
return $handle;
}
function newSession($handle="{0}",$nom_zone = "|root|"){
if ( $this->sessions[$handle][$nom_zone]->used ) $this->closeSession($handle,$nom_zone);
$this->addSession($handle,$nom_zone,$cache,$time,$num_session);
return 1;
}
function addSession($handle="{0}",$nom_zone = "|root|"){
// Does the zone exist ?
if(!isset($this->sessions[$handle][$nom_zone])) return $this->error(11,array($nom_zone,$this->file_name[$handle]),"TTT4",1);
$this->sessions[$handle][$nom_zone]->init();
return 1;
}
function closeSession($handle="{0}",$nom_zone = "|root|"){
// Close the current session and all his sub-session
// Check if the zone exists.
if(!isset($this->sessions[$handle][$nom_zone])) return $this->error(11,array($nom_zone,$this->file_name[$handle]),"TTT5",1);
// Closing sub-zone
$this->sessions[$handle][$nom_zone]->closeSession();
return 1;
}
function setGlobalVar($arg1,$arg2,$arg3){
if ($arg1 == 1){
if (!$this->setGAll($arg2,$arg3)) return $this->error(12,$arg2,"TTT6",1);
return 1;
}
if (!isset($this->sessions[$arg1])) return $this->error(13,$arg1,"TTT7",1);
$tab=explode(".",$arg2);
if (count($tab)==1){
if (!$this->setGFile($arg1,$arg2,$arg3)) return $this->error(14,array($this->file_name[$arg1],$arg2),"TTT8",1);
}
else if (count($tab==2)){
if (!isset($this->sessions[$arg1][$tab[0]])) return $this->error(11,array($tab[0],$this->file_name[$arg1],"TTT9",1));
if (!$this->setGZone($arg1,$tab[0],$tab[1],$arg3)) return $this->error(15,array($this->file_name[$arg1],$tab[0],$tab[1]),"TTT10",1);
}
return 1;
}
function setVar($handle,$zone_var,$val){
// Fill the variable
$tab=explode(".",$zone_var);
if(count($tab)==2){
$zone=$tab[0];
$var=$tab[1];
}
else
{
$zone="|root|";
$var=$tab[0];
}
// Teste l'existence de la zone dans la liste
if (!isset($this->sessions[$handle][$zone])) return $this->error(11,array($this->file_name[$handle],$zone),"TTT11",1);
//Enregistre la variable
return $this->sessions[$handle][$zone]->setVar($var,$val);
}
function Parse($handle_dest,$zone_var_dest,$handle_source,$zone_source="|root|"){
if($this->sessions[$handle_source][$zone_source]->used == 1) $this->closeSession($handle_source,$zone_source);
$this->setVar($handle_dest,$zone_var_dest, $this->sessions[$handle_source][$zone_source]->generated);
}
function setVarF($handle,$zone_var,$file){
// Fonction qui ouvre le fichier file et copie ce qu'il y a dedans dans une variable.
$tab=explode(".",$zone_var);
// Récupération nom de la zone et de la variable.
if(count($tab)==2){
$zone=$tab[0];
$var=$tab[1];
}
else
{
$zone="|root|";
$var=$tab[0];
}
// Teste l'existence de la zone dans la liste
if (!is_object($this->sessions[$handle][$zone])) return $this->error(11,array($handle,$zone),"TTT12",1);
// Récupération du source à lire
if (!@file_exists($file)) return $this->error(8,$file,"TTT13",1);
if (!$f_id=@fopen($file,"r")) return $this->error(9,$file,"TTT14",1);
if (!$val=@fread($f_id, filesize($file))) return $this->error(10,$file,"TTT15",1);
clearstatcache();
fclose($f_id);
//Enregistre la variable
return $this->sessions[$handle][$zone]->setVar($var,$val);
}
function isZone($handle, $zone="|root|")
{
return isset($this->sessions[$handle][$zone]) ;
}
function Display($handle="{0}",$display=1,$zone="|root|"){
$this->closeSession($handle,$zone);
$c_genere = $this->sessions[$handle][$zone]->generated;
if ($display) echo $c_genere; else return ($c_genere);
}
//fonction complementaire version BETA
/*
*
On peut l'utiliser :
- SetVarTab($array): tout les couples clef/valeur sont valorisées
- SetVarTab($array,$index) seuls les couples clef/valeur dont la clef est dans le tableau index ou dont la valeur == $index (si pas tableau)
Si $index contient ou est une clef de type zone.clef, la clef sera extraite du texte est servira d'index pour $array
Vincent
*/
function setVarTab($handle,$zones,$index = array()){
if (is_array($index))
{
if (count($index)>0)
{
reset($index);
while (list (, $key) = each ($index))
{
$tab=explode(".",$key);
if(count($tab)==2){
$var=$tab[1];
}
else
{
$var=$tab[0];
}
setVar($handle,$key,$zones[$var]);
}
}
else
{
reset($zones);
while (list ($key, $val) = each ($zones))
{
setVar($handle,$key,$val);
}
}
}
else
{
setVar($handle,$index,$zones[$index]);
}
}
function setGlobalVarTab($handle,$zones,$index = array()){
if (is_array($index))
{
if (count($index)>0)
{
reset($index);
while (list (, $key) = each ($index))
{
$tab=explode(".",$key);
if(count($tab)==2){
$var=$tab[1];
}
else
{
$var=$tab[0];
}
setGlobalVar($handle,$key,$zones[$var]);
}
}
else
{
reset($zones);
while (list ($key, $val) = each ($zones))
{
GlobalVar($handle,$key,$val);
}
}
}
else
{
setBlobalVar($handle,$index,$zones[$index]);
}
}
// End VTemplate
}
$DEFINE_VTEMPLATE = 1;
}
?>
Je vais précisé ma demande parce que je pense qu'on ne s'est pas bien compris. Je ne suis pas un expert en dev php ou dev objet et je ne souhaite pas l'être. J'utilise quelques classes php quand la documentation jointe me permet de le faire pour faire de petits sites pour faire plaisir à mon entourage ou pour des besoins perso.
Les histoires de constructeur, de static, de construct(), je ne sais pas ou ça doit n’emmener mais je n'y suis pas du tout. Je le redis mes connaissances en php sont insuffisantes. J'utilise cette classe depuis très très longtemps car elle répond a mes attentes et est très très simple d'utilisation avec une documentation en français jointe.
Je demande simplement si quelqu'un saurait la modifier si ce n'est pas trop compliqué ou m'indiquer une classe similaire qui pourrait la remplacer.
MatTheCat comprenez que vous avez une connaissance que je suis loin d'avoir
Benzouye La question ne démontre pas un manque de recherche mais un manque de connaissances, d'ailleurs je l'ai indiqué. Je vous remercie m'inviter a faire de vrai recherches pour un bon apprentissage mais il faudrait me dire ou j'ai indiqué que je souhaitai me lancer dans l'apprentissage de la programmation objet au point de modifier ou créer des classe objets.
En ce qui concerne la class vTemplate
Mon manque de recherche ne m'a pas permis de voir 4 class dans le fichier vTemplate.class.php
Class Err
Class Session
Class VTemplate_Private
Class VTemplate
de voir que la seule fonction identique a la classe est
Session
D'essayer un peu au hasard de remplacer session par construct, par new, par je ne sais plus quoi d'autres sans arriver a quelques choses de fonctionnel.
Sachez aussi que par mon manque de recherche, j'ai aussi essayé de contacter les 2 créateurs de cette classe à plusieurs reprises sans réponses à ce jour. Les mails n'existent plus ainsi que la plupart des sites utilisés au moment de la création de la classe.
MatTheCat Si vous avez un moment pour me répondre je vous en saurais gré
Benzouye De votre part je n'attends aucune réponses et je m'excuse par avance d'un tel affront d'avoir posté avec un tel manque de recherche !
Tu as une autre solution, ne pas upgrader la version de php pour ce serveur.
Et avoir des problèmes de sécu ?
GwL a écrit:
Je ne suis pas un expert en dev php ou dev objet et je ne souhaite pas l'être
C'est surtout ça que je comprends pas. Est-ce qu'un mec peut se dire : "Je construits des maisons pour mes proches ou moi-même mais je ne veux pas me mettre à jour sur les dernières normes qui font que les maisons ne s'écroulent pas ou n'auront pas de problème car l'electrécité est mal faite ?"
Ce qui est dit est pour moi exactement pareil. Si on fait du dev on le fait du mieux qu'on peut ou pas du tout. Je ne parle pas d'apprendre tout sur les objets, le php ou quoi que ce soit, mais juste se tenir à jour par rapport à ce que l'on utilise. Et faire du code propre que ce soit visuellement ou côté sécurité.
Car le code au dessus je sais pas si c'est comme ça vraiment ou l'éditeur de OCR qui est mal mis mais si c'est comme ça qu'il est vraiment ton code alors juste un petit reindent all de ton éditeur / ide suffirait à le rendre plus lisible
Je ne suis pas un expert en dev php ou dev objet et je ne souhaite pas l'être
Ok, mais là il faut mettre un minimum les doigts dans le camboui ...
GwL a écrit:
Benzouye De votre part je n'attends aucune réponses et je m'excuse par avance d'un tel affront d'avoir posté avec un tel manque de recherche !
Et cela ne sert à rien d'être susceptible sur un forum ... nous ne sommes pas devin sur ton engagement face à la programmation, ni sur ce que tu as déjà essayé de faire avant de poster ...
D'autant que j'avais apporté des éléments de réponse ... visiblement insuffisant ... je reformule :
Le message d'erreur te dit qu'une classe PHP a une méthode constructeur qui porte le même nom que la classe, ce qui est obsolète. Dans ces classes, il te faut remplacer le nom du constructeur par __construct().
Donc il faut trouver dans ton code une classe dont le nom est le même que sa fonction (méthode) constructeur. Exemple :
class MaClasse () {
...
function MaClasse() {
...
}
...
}
Ce n'est pas le cas dans le code que tu as posté, donc ce doit être ailleurs dans d'autres classes ... Avec un éditeur de texte recherche le mot "class" dans tout ton code, et pour chaque occurrence regarde le nom de la classe, et regarde si une fonction qu'elle contient porte le même nom ... si oui, remplace ce nom par __construct().
Si cela est hors de ta portée, rapproche toi d'un développeur de ton entourage pour qu'il le fasse ...
Dans un premier temps, c'est exactement ce que j'ai fait mais il est évident qu'un moment les anciennes versions de Php seront de moins en moins maintenues par les hébergeurs de sites et le problème va à nouveau se poser.
Je ne peux pas être d'accord avec tout ce que tu dis. on peut être passionné de voitures (conduite par ex) sans pour autant vouloir être mécano. On peut connaitre le principe général d'un moteur mais ne pas être capable de réparer. J'utilise les classes Php pour le fonctionnel qu'elles apportent. Je lis les documentations jointes rigoureusement pour utiliser la classe du mieux possible.
Pour ce qui du code, à la base je l'ai posé tout formaté mais le forum à modifié l'indentation. hastebin.com je ne connaissais pas.
C'est bien ça le soucis, il n'y a pas de constructeur du même nom. dans la classe vTemplate, il n'y a pas la fonction vTemplate.
La façon d'utiliser la classe n'en dis pas plus
// utilisation de la classe
require("vTemplate.class.php");
$MonTemplate = new vTemplate;
$MonHandle = $MonTemplate->Open ( MonfichierTPL.php);
//
//
// on fait notre sauce sur l'utilisation du template
// en travailant sur $MonHandle
//
echo $MonTemplate->display( $MonHandle );
le code n'est pas complet, c'est juste pour montrer le principe.
on charge la classe avec le require.
on crée notre objet vtemplate si j'ai bien compris.
on charge le modèle de template sur lequel on doit travailler.
on affiche le résultat avec la fonction display.
La construction se fait au moment du new vTemplate
Quand je regarde dans la classe, il y a pas de new, pas de fonction vTemplate, pas de construct etc ..
Quand j'essai de fouiller dans la classe, ça me donne l'impression de lire un truc en arabe, c'est le nuage total.
Néanmoins j'ai vu que vTemplate héritait de VTemplate_Private dans lequel il n'y a pas de vtemplate ou de VTemplate_Private, de construct etc ...
Comprenez que c'est pas un manque de volonté c'est juste que j'ai jamais réussi à appréhender la programmation oo.
Perso j'ai débuté avec le C et j'ai même travaillé sur des projets assez sensible. Le jour ou on m'a envoyé en formation pour le c++, j'ai commencé à sérieusement à me gratter la tête et je n’ai jamais réussi à assimiler ça. Je vous évite les mésaventures qui en on suivi.
Aujourd'hui je me dis que pour quelqu'un qui maîtrise ce sujet ça doit pas être très compliqué de modifier cette classe pour qu'elle réponde aux nouvelles conditions de php.
Si cela est vraiment trop compliqué alors je vais m'orienter vers un nouveau système de template et les retours d'expériences sont les bienvenues.
Quand je regarde dans la classe, il y a pas de new, pas de fonction vTemplate, pas de construct etc.
La classe Session a bien une méthode nommée Session ... ligne 129 de ton code posté au départ ... Remplace ce Session par __construct() :
class Session extends err {
var $name; // Name of the session
var $globalvar = array(); // List of global variable of the session
var $varlist = array(); // List of vars in this session
var $subzone = array(); // list of sub-zone
var $temp; // Generated code for the current session
var $generated = NULL; // The final code
var $source; // Source code
var $used=0; // Indicates if the session contain used variable
var $stored; // Give the filename were is stored the session
function __construct($name,$source,$stored) {
$this->name = $name;
$this->source = $source;
$this->stored = $stored;
$this->parseVar();
}
J'ai pris un peu de temps pour répondre. le travail, la vie de famille nous laisse pas toujours le temps de faire ce qu'on veut
Je viens de test et effectivement ça n'affiche plus le message. J'avais testé ça, il y a un moment déjà et ça criait partout. Je suppose que j'avais du laisser des modifs par ci par la de mes test précédent.
Même si je comprend pas trop le rôle du construct dans session, je vous remercie bien.
Il doit surement exister mieux que cette classe mais je la trouve vraiment génial. Elle est très très facile d'utilisation et permet pas mal de choses.
J'ai regardé ce que faisait ce fichier et au final le mieux je pense serait de partir sur un autre système de template plus à jour comme twig ou blade. Car au final ce que te permet la classe c'est exactement ça.
Blade ça me semble un peu compliqué pour moi mais twig je vais essayer de voir de plus près.
Merci
Modification de class
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL