Appel fonction d'une classe à partir d'une autre classe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Appel fonction d'une classe à partir d'une autre classe

par rakizm » 13 avr. 2007, 15:24

pour remédier à ton blèm tu peux aussi inclure dans le fichier de la classe appelante le fichier de la classe appelée
ça donne:
include_once("rub.php");
class annu {

   public function set_nom_annu($nom) {
      $this->nom_annu = $nom;
   }

   public function ajout_rub($nom) {
      $rub = new rub($nom);
   }

et comme ça tu peux juste instancier "annu" sans t'occuper de "rub"

par JFGore » 04 avr. 2007, 20:10

Merci beacoup pour ton aide

les classes sont vues comme des variables pour PHP5 si j'ai bien compris

JFG

par zeus » 04 avr. 2007, 17:15

Ce n'est pas parce que tu instancies $rub DANS la classe X que tu peut accéder à cette variable dans le code qui instancie la classe X : c'est ce qu'on appelle la portée des variables.

par pascaltje » 04 avr. 2007, 17:13

ta variable $rub est locale, et accessible uniquement depuis la méthode.

une variante :
class annu {

   public function set_nom_annu($nom) {
      $this->nom_annu = $nom;
   }

   public function ajout_rub($nom) {
      $this->rub = new rub($nom);
   }
puis :

echo $annu->rub->get_nom_rub();

par JFGore » 04 avr. 2007, 16:16

En fais quand on instancie une classe dans une classe elle n'est accessible que dans celle-ci ?

par Invité » 04 avr. 2007, 16:12

faute de frappe :

echo $rub->get_nom_rub().'<br>'; //apelle de la classe Y

juste avant g apellé la fonction annu->ajout_rub('YYY');

cette fonction instancie rub

par zeus » 04 avr. 2007, 15:36

Dans ton fichier index.php, je vois la ligne
echo $rubr->get_nom_rub().'<br>'; //apelle de la classe Y 
mais aucune instanciation ...

$rub n'existe que dans la classe X ... et toi, tu essayes d'y accéder depuis l'extérieur de la classe ;)

Il faut que tu fasses une méthode dans ta classe X qui permette d'utiliser $rub

par Invité » 04 avr. 2007, 15:24

index.php :

Code : Tout sélectionner

<?php function __autoload($classe) { $fichier = "$classe.php"; require_once($fichier); } $annu = new annu(); $annu->set_nom_annu('XXX'); $annu->ajout_rub('YYY'); echo $rubr->get_nom_rub().'<br>'; //apelle de la classe Y ?>
Classe X :

Code : Tout sélectionner

<?php class annu { public function set_nom_annu($nom) { $this->nom_annu = $nom; } public function ajout_rub($nom) { $rub = new rub($nom); } ?>
Classe Y :

Code : Tout sélectionner

<?php class rub { public function get_nom_rub() { return $this->nom_rub; } ?>

par zeus » 04 avr. 2007, 14:54

Donne nous le code concerné de la classe X.

J'ai l'idée que tu essayes de faire $X->methode() alors qu'il faudrait faire $X->Y->methode()

Appel fonction d'une classe à partir d'une autre classe

par JFGore » 04 avr. 2007, 14:52

Bonjour

j'ai un fichier index.php, j'instancie une classe X dans laquelle se trouve une fonction qui instancie une autre classe Y. Quand j'instancie la classe X ca marche, ensuite quand j'apelle la fonction qui instancie la classe Y ca se passe bien, juste après avoir instancié je teste le type (gettype) cela me retourne objet. Par contre dans mon index.php lorsque j'apelle une fonction de la classe Y, j'ai un message d'erreur me disant que ce n'est pas un objet

Fatal error: Call to a member function get_nom_rubrique() on a non-object in /homepages/index.php on line 19

merci de votre aide
j'espere avoir ete claire

JFG