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

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

    Informations forums :
    Inscription : juin 2006
    Messages : 2 007
    Points : 695
    Points
    695

    Par défaut 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 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 207
    Points : 43 386
    Points
    43 386

    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 : 30
    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 081
    Points
    1 081

    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 007
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2006
    Messages : 2 007
    Points : 695
    Points
    695

    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. [Configuration] Création en php de sous sites
    Par guiguistuder dans le forum Outils
    Réponses: 4
    Dernier message: 18/09/2006, 23h56
  2. Installer et configurer GD avec PHP 5 et Apache 2
    Par mariogarcia dans le forum GD
    Réponses: 3
    Dernier message: 27/08/2006, 12h21
  3. Problème de configuration du module PHP
    Par RV80 dans le forum Apache
    Réponses: 1
    Dernier message: 26/07/2006, 10h29
  4. [Configuration] Probleme config Php / MySql
    Par Kips dans le forum Outils
    Réponses: 3
    Dernier message: 22/02/2006, 16h24
  5. 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