En résumé: comment accéder aux méthodes d'une classe instanciée par une méthode d'une classe différente?Accéder à une classe qui a été instanciée par une méthode dans une classe distincte
Il y a un peu de code, je suis à la recherche en ce moment qui effectue les opérations suivantes (modifier le code est une option, btw Il est pas à moi ... Je déchiffre juste.):
Une classe a une méthode qui instancie une classe différente. Il ressemble à ceci:
// this file is named fooClassHere.php class Foo{ public $meh; function bar(){ $something = new Baz; $this->meh = $something->getStuff(); } }
Ce que je suis en train de comprendre est comment accéder aux méthodes de cette classe instanciée Baz. Une autre page contient quelque chose comme ce qui suit:
include 'bazClassHere.php'; include 'fooClassHere.php'; $a = new Foo; $a->bar();
ne devrait donc pas tous Baz disponible maintenant d'une certaine manière (et non pas seulement getStuff() que j'affecté à $ this-> meh)? Les classes Foo et Baz sont incluses, le code instancie Foo, puis appelle la méthode bar de Foo() qui à son tour instancie la classe Baz. Il est évident que ce qui suit affiche les données retournées par la méthode getStuff de Baz():
var_dump($a->meh);
Mais je voudrais accéder tous des méthodes disponibles de Baz sans passer par l'étape intermédiaire de leur assigner manuellement comme je l'ai fait à l'intérieur Foo méthode de bar:
$this->meh = $something->getStuff()
Peut-être quelque chose comme (mais bien sûr, cela ne fonctionne pas):
$a = new Foo;
$a->bar(); //instantiates Baz as $something $a->something->fromBaz(); //$something is an instance of Baz, yes? No?
J'espère que cela est logique et je ne confondez pas la question avec mes notes. Ack! > _ <
Donc, $ a-> something-> fromBaz() va fonctionner? Soit, son quelque chose et votre baz sont des instances de Baz? –
non, les OP ne fonctionneraient pas car $ quelque chose est juste une variable locale à la méthode bar(). il a besoin de faire quelque chose d'une variable de classe et de le définir par $ this afin qu'il puisse alors accéder au nouvel objet Baz en dehors de la classe à travers un objet Foo. –
Fantastique! J'ai dupliqué le code que je regarde (puisque je ne peux pas changer l'original mais je veux vraiment voir ce travail), j'ai fait de la variable qui instancie Baz en une variable de classe et cela fonctionne comme annoncé. Cela m'aide à faire en sorte que toute la POO soit plus droite dans ma tête. Merci (allez FSU). – Stuart