IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] configuration smarty et php 5


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut [Smarty] configuration smarty et php 5
    Bonjour,

    j'ai installé la dernière version de smarty

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    require($_SERVER['DOCUMENT_ROOT'].'/Smarty-3.1.12/libs/Smarty.class.php');
     
    class Smarty_extend extends Smarty
    {
    	function Smarty_extend()
    	{
    		// Constructeur de la classe.
    		// Appelé automatiquement à l'instanciation de la classe.
    		$this->Smarty();
    		$this->template_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/templates/';
    		$this->compile_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/templates_c/';
    		$this->config_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/configs/';
    		$this->cache_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/cache/';
    		$this->caching = false;
    		$this->assign('app_name', $application);
    	}
    }
     
    $oSmarty = new Smarty_extend;
    J'ai le message suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'SmartyException' with message 'PHP5 requires you to call __construct() instead of Smarty()' in D:\wamp\www\Smarty-3.1.12\libs\sysplugins\smarty_internal_templatebase.php on line 803
    Je ne comprends pas ce que veut dire ce message, sauf qu'il faut renommer $this->Smarty(); en autre chose ?

    J'ai regardé les tutos d'Eric Pommereau mais nada, que d'chi, j'suis perdu.

    Merci pour votre éclairage.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut remplacer par
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Il s'agit en fait d'une évolution de PHP : avant il était possible d'appeler son constructeur par le nom de la classe (c'est toujours possible mais pas recommandé) mais aussi grâce à la méthode magique __construct.

    Pour ton code, il faut remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Smarty_Extend()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function __construct()
    Au passage tu devrais mettre ton nom de classe en UpperCamelCase : SmartyExtend.

    Ensuite, dans la méthode, il faudrait changer $this->Smarty() par parent::__construct()

    Essaye ça et dis moi, j'avoue que je n'ai pas testé ce code et que je n'utilise pas Smarty, mais je pense que mes notions en PHP OO sont assez bonnes.

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il faut remplacer par
    Merci

    Comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    require($_SERVER['DOCUMENT_ROOT'].'/Smarty-3.1.12/libs/Smarty.class.php');
     
    class Smarty_extend extends Smarty
    {
    	public function __construct()
    	{
    		// Constructeur de la classe.
    		// Appelé automatiquement à l'instanciation de la classe.
    		parent::__construct();
    		$this->template_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/templates/';
    		$this->compile_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/templates_c/';
    		$this->config_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/configs/';
    		$this->cache_dir = $_SERVER['DOCUMENT_ROOT'].$application.'/smarty/cache/';
    		$this->caching = false;
    		$this->assign('app_name', $application);
    	}
    }
     
    $oSmarty = new Smarty_extend;
    J'ai une autre erreur maintenant, mais je vais creuser
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Préfère les getters et setters pour le changement des propriétés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $this->SetTemplateDir()
    $this->SetCompileDir()
    $this->SetCaching()
    // etc

    et $this->GetTemplateDir() etc pour récupérer les valeurs.

    Ca fait la même chose, mais c'est plus propre : tu permets à Smarty de considérer que la modification d'une propriété se fait comme Smarty l'a décidé, et non toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Smarty] smarty varirable php d'un template à un autre
    Par darak987 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/10/2012, 00h29
  2. [PHP 5.0] fichier introuvable Smarty.class.php
    Par rezguiinfo dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2010, 17h41
  3. [Smarty] Failed opening required '../Smarty/Smarty.class.php'
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 11/11/2010, 19h31
  4. [Smarty] passer des variables smarty dans {php}
    Par emile13 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/02/2008, 19h51
  5. [Configuration] Installation de PHP + Pbm de fonctions non reconnues
    Par BARBIER dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 23/11/2005, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo