OVH Cloud OVH Cloud

Integrer une instance dans une classe.

12 réponses
Avatar
Laurent Seguin
Salut !

Je viens d'avoir un cas qui ne m'ai encore jamais arrivé et comme je suis
assé nul en POO je solicite votre aide.

Comment intégrer une méthode d'une instantation de A dans une classe B ?


exemple bidon :
---------------

require_once(class_A.php);
$MonA = new A();

class B {
var unevar = "";
[...]
function truc() {
[...]
print($MonA->methode($this->unevar)); // Et la ça veut pas, pourquoi ?
}
[...]
}

--

10 réponses

1 2
Avatar
Ronnie Garcia
Je viens d'avoir un cas qui ne m'ai encore jamais arrivé et comme je suis
assé nul en POO je solicite votre aide.

Comment intégrer une méthode d'une instantation de A dans une classe B ?

exemple bidon :
---------------

require_once(class_A.php);
$MonA = new A();

class B {
var unevar = "";
[...]
function truc() {
[...]
print($MonA->methode($this->unevar)); // Et la ça veut pas, pourquoi ?
}
[...]
}


A n'en voir que ce bout de code, MonA n'est pas connu de la methode
B::truc(). Ne peux tu pas passer une référence en argument ?

--
Ronnie Garcia <ronnie at mk2 dot net>

--

Avatar
Marc

Salut !

Je viens d'avoir un cas qui ne m'ai encore jamais arrivé et comme je suis
assé nul en POO je solicite votre aide.

Comment intégrer une méthode d'une instantation de A dans une classe B ?


plutot que de faire du bidon, mieux vaut faire du concret :

class Roue {
var $diametre;
var $couleur;

function rouler($vitesse){
echo "Roue::rouler($vitesse)n");
}
}

class Voiture{
var $roue;

function Voiture(){
echo "Voiture::constructeurn";
$this->roue = new Roue();
}

function rouler($vitesse){
$this->roue->rouler($vitesse);
}
}

$v = new Voiture();
$v->rouler(90);


ca devrait globalement fonctionner, je ne sais pas si ce style
d'intégration qu'on appelle agregation répond a ta demande ?

--

Avatar
Laurent Seguin
Ronnie Garcia , le 26 oct. 2004 21:32:33,
écrivait ceci:

Je viens d'avoir un cas qui ne m'ai encore jamais arrivé et comme je
suis assé nul en POO je solicite votre aide.

Comment intégrer une méthode d'une instantation de A dans une classe
B ?

exemple bidon :
---------------

require_once(class_A.php);
$MonA = new A();

class B {
var unevar = "";
[...]
function truc() {
[...]
print($MonA->methode($this->unevar)); // Et la ça veut pas, pourquoi
? }
[...]
}


A n'en voir que ce bout de code, MonA n'est pas connu de la methode
B::truc().


Non... Mais je pensais (bêtement ?) que les objets étaient instantiés en
global, donc je me suis dit que je pouvais placer $MonA->methode() ou je
voulais...

Ne peux tu pas passer une référence en argument ?


Pas con... Si je fais une dérivée de B (je ne peux me permettre de toucher
à la classe initiale) ça doit être jouable.

J'essayerais demain matin :-)

--


Avatar
marc.quinton-PAS-DE-
Non... Mais je pensais (bêtement ?) que les objets étaient instantiés en
global, donc je me suis dit que je pouvais placer $MonA->methode() ou je
voulais...



si le probleme est juste un soucis de visibilité de variable globale,
ceci devrait fonctionner :


require_once(class_A.php);
$MonA = new A();

class B {
var unevar = "";

function truc() {

global $MonA;
print($MonA->methode($this->unevar)); // Et la ça veut pas, pourquoi ?
}
}

--

Avatar
Laurent Seguin
Marc , le 27 oct. 2004 00:55:07, écrivait ceci:

Comment intégrer une méthode d'une instantation de A dans une classe
B ?


plutot que de faire du bidon, mieux vaut faire du concret :
[...]

ca devrait globalement fonctionner, je ne sais pas si ce style
d'intégration qu'on appelle agregation répond a ta demande ?


Oui parfait :-)
Par contre, je n'ai pas eu besoin de redéfinir la méthode rouler() dans
Voiture...

Si t'as une doc la dessus je suis preneur :-)

--


Avatar
marc.quinton-PAS-DE-
Laurent Seguin wrote:

Par contre, je n'ai pas eu besoin de redéfinir la méthode rouler() dans
Voiture...

Si t'as une doc la dessus je suis preneur :-)


heuu, que recherches tu exactement ?

--

Avatar
Laurent Seguin
, le 28 oct. 2004
12:14:09, écrivait ceci:

Par contre, je n'ai pas eu besoin de redéfinir la méthode rouler() dans
Voiture...

Si t'as une doc la dessus je suis preneur :-)


heuu, que recherches tu exactement ?


Ben je sais pas justement :-/
Genre ça : http://hachesse.developpez.com/objetphp/
Mais en plus complet et qui va plus loin.

--


Avatar
marc.quinton-PAS-DE-
Laurent Seguin wrote:

Ben je sais pas justement :-/
Genre ça : http://hachesse.developpez.com/objetphp/
Mais en plus complet et qui va plus loin.


tu veux parler :

- du langage php,
- de la terminologie objet : (agregation, héritage, interface)
- de la mise en oeuvre, d'exemples concrets pour bien démarrer ?

ca me rappel un cours Java ou nous avions réalisé les fonctions
de bases d'un monopoly. L'exercice était assez intéressant et
casse tete pour une personne non habituée a la conception objet.

Il y avait une specification des regles du jeu. Le plus intéressant
c'est que les specs étaient enrichies progressivement. Et la
structure des classes étant bien construites a la base permettait
de s'y adapter sans soucis. Je crais que nous aurions eu quelques
difficultés en programmation traditionnelle.

J'aimerai bien retrouver le contenu de cet exercice. On devrait
pouvoir le réaliser sans probleme en php. Il n'y avait pas de
graphisque, juste des messages textuels ...

Pour info, la société de formation, c'est ... (ca commence par
un L, et contient le mot arbre et apprentissage en anglais).

Avatar
marc.quinton-PAS-DE-
Laurent Seguin wrote:


Ben je sais pas justement :-/
Genre ça : http://hachesse.developpez.com/objetphp/
Mais en plus complet et qui va plus loin.



j'ai trouvé cela, mais c'est en englais :

http://www.tonymarston.net/php-mysql/good-bad-oop.html

Avatar
Laurent Seguin
, le 02 nov. 2004
12:42:06, écrivait ceci:

Ben je sais pas justement :-/
Genre ça : http://hachesse.developpez.com/objetphp/
Mais en plus complet et qui va plus loin.


tu veux parler :

- du langage php,


Pour ça j'ai la doc :-)

- de la terminologie objet : (agregation, héritage, interface)


Plus ou moins, disons tout ce qui est possible en POO appliqué à PHP.

- de la mise en oeuvre, d'exemples concrets pour bien démarrer ?


Je me suis trouvé un bon exemple concret à décortiquer : dotclear

++


1 2