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

Langage PHP Discussion :

[POO] Accéder aux méthodes d'une classe depuis une autre classe


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [POO] Accéder aux méthodes d'une classe depuis une autre classe
    Bonjour,

    J'ai une class Facture.

    A l'intérieur de Facture, j'ai une fonction imprimer();

    Dans cette fonction imprimer, j'ai besoin d'appeler les méthodes d'une autre class ($Smarty) pour générer des templates.

    Le problème est que si je fais directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $smarty->assign('bidul', $truc);
    j'ai une
    PHP Fatal error: Call to a member function assign() on a non-object.
    Donc, je me dis que je n'ai qu'à instancier $Smarty de nouveau dans Facture->imprime();. Sauf que là, j'ai une autre
    PHP Fatal error: Cannot redeclare class Smarty


    du coup je me sens un peu bloqué : comment appeler les méthodes d'une classe à l'intérieur d'une autre class ????

    Merci d'avance !

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Fait voir ta ligne ou tu instancie $smarty ? Il y a probablement une petite erreur de syntaxe. A moins que tu n'ai inclu le php avec la classe smarty plusieurs fois ?
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    je vois 2 solutions,
    - déclarer $smarty en tant que variable globale
    - passer une référence à $smarty en argument de imprimer() (ou par copie si t'as pas besoin de modifier l'objet mais dans ce cas-là tu peux aussi réinstancier un nouvel objet dans la fonction)

    Bye
    Vive les roues en pierre

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    alors, à la racine du site, j'ai un fichier constantes.php qui contient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    require('setup.php');// le fichier de configuration de smarty
    $smarty = new Smarty_smartysite;
    function __autoload($class_name) {
       require_once $class_name . '.class.php';
    }
    $sql = new BD (DB_NOM, DB_PASSE, DB_BASE, DB_HOTE);
    $facture = new Facture (DB_NOM, DB_PASSE, DB_BASE, DB_HOTE);
    Ensuite, dans index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    session_start();
    require('constantes.php');
    //bla-bla-bla
    include_once('get.a.php');
    Dans get.a.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    require_once('constantes.php');
    //bla-bla-bla de code et encore du code
    if($_POST['f'] == 'f'){
    	$facture->ajout($id, $qte, $qu_idvin, $_POST['i'], $taux_tva);
    		}
    et dans Facture.class.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public function ajout ($id, $qte, $qu_idvin, $i, $taux_tva){
    // encore du code et puis :
    if($i == 'i'){
    	$this->imprime($taux_tva);
    	}
    }
    // et donc la private function imprime :
     
    private function imprime($taux_tva){
    // c'est ici que j'ai besoin d'appeler un template smarty qui montre la facture 
    // constituée grace aux autres fonctions de class Facture...
    }
    J'ai essayé d'ajouter $smarty dans les arguments de l'appel à la fonction $facture->ajout ce qui donne (dans get.a.php) :

    $facture->ajout($id, $qte, $qu_idvin, $_POST['i'], $taux_tva, $smarty);

    Pour ensuite passer $smarty à la méthode imprime, mais sans succès...

    Merci d'avance !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Djakisback
    Salut,
    je vois 2 solutions,
    - déclarer $smarty en tant que variable globale
    - passer une référence à $smarty en argument de imprimer() (ou par copie si t'as pas besoin de modifier l'objet mais dans ce cas-là tu peux aussi réinstancier un nouvel objet dans la fonction)

    Bye
    donc j'instancie $smarty comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    global $smarty;
    $smarty = new Smarty_smartysite;
    mais ça me dit toujours :

    [Mon Apr 23 16:24:41 2007] [error] PHP Notice: Undefined variable: smarty in /Users/thiebo/Sites/vinipro/Facture.class.php on line 67
    [Mon Apr 23 16:24:41 2007] [error] PHP Fatal error: Call to a member function assign() on a non-object in /Users/thiebo/Sites/vinipro/Facture.class.php on line 67

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    résolu en passant $smarty en argument des différentes méthodes de la classe Facture !

    MERCI

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2013, 20h23
  2. Accéder aux membres d'un WF depuis une custom activity
    Par Louis-Guillaume Morand dans le forum Windows Workflow Foundation
    Réponses: 4
    Dernier message: 13/12/2008, 08h50
  3. Réponses: 4
    Dernier message: 11/04/2007, 14h26
  4. Accéder aux objets de la form1 depuis une class
    Par Jimmy_S dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/03/2007, 22h47
  5. [POO] Acces aux attributs d'un objet depuis une methode evenement :s
    Par NikoGJ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/07/2006, 19h01

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