Imbrication de class en php
nickleus
Messages postés
374
Date d'inscription
Statut
Membre
Dernière intervention
-
nickleus Messages postés 374 Date d'inscription Statut Membre Dernière intervention -
nickleus Messages postés 374 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila mon code :
je souhaite faire en sorte que ça me retourne la valeur de la multiplication de la méthode de la class __2 que si la méthode de la class __1 retourne true.
et tout cela en imbriquant mes objets.
merci infiniment d'avance
voila mon code :
class __1 { public function testVar($var) { if(is_numeric($var)) { return $var; } } } class __2 { public function mul($var){ return 2*$var; } } class __3 { public function display($var) { echo '<p>'.$var.'</p>';} } $var = '10'; $test1 = new __1(); $test1 -> test2 = new __2(); print_r($test1->test2->mul($var));
je souhaite faire en sorte que ça me retourne la valeur de la multiplication de la méthode de la class __2 que si la méthode de la class __1 retourne true.
et tout cela en imbriquant mes objets.
merci infiniment d'avance
A voir également:
- Imbrication de class en php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel de classement de photos gratuit - Guide
- Logiciel de classement de documents gratuit - Télécharger - Bureautique
- Nvcontainer window class - Forum Virus
3 réponses
J'aurais plutôt fais ça :
class __1 { public function testVar($var) { return is_numeric($var); } } class __2 extends __1 { public function mul($var){ if ($this->testVar($var)) return 2*$var; else return false; } } $var = '10'; $test = new __2(); print_r($test->mul($var));Si tu veux vraiment imbriquer tes objets sans héritage, alors tu n'as pas d'autre choix que de rendre accessible la classe contenante au contenu par exemple :
class __1 { public function testVar($var) { return is_numeric($var); } } class __2 { function__construct($container){ if (method_exists($container, 'testVar') $this->container = $container; else echo "TODO : gestion d'erreur"; } public function mul($var){ if ($this->container->testVar($var)) return 2*$var; else return false; } } $var = '10'; $test1->test2 = new __2($test1); print_r($test1->test2->mul($var));
Ta deuxième solution m'intéresse beaucoup :) :) :) :)
Mais est-il possible de généraliser un peu plus la class __2. C'est dire que je veux pouvoir utiliser n'importe quel méthode de la class __1 sans forcément à devoir déclarer la méthode par la fonction : method_exists();
je début en la matière et j'ai vus un truc de ce genre (je ne dit pas que le code suivant en bon):
function__construct(&$test1){
}
j'ai cru comprendre (mais je peux me tromper) que ça permettait de faire la même chose ? Non ?
Par contre je ne sais pas comment.
Y a t'il une solution pour généraliser la class ?
Merci encore pour ta réponse.
Mais est-il possible de généraliser un peu plus la class __2. C'est dire que je veux pouvoir utiliser n'importe quel méthode de la class __1 sans forcément à devoir déclarer la méthode par la fonction : method_exists();
je début en la matière et j'ai vus un truc de ce genre (je ne dit pas que le code suivant en bon):
class __1 { public function testVar($var) { return is_numeric($var); } } class __2 {
function__construct(&$test1){
}
public function mul($var){ if ($this->container->testVar($var)) return 2*$var; else return false; } } $var = '10'; $test1->test2 = new __2($test1); print_r($test1->test2->mul($var));
j'ai cru comprendre (mais je peux me tromper) que ça permettait de faire la même chose ? Non ?
Par contre je ne sais pas comment.
Y a t'il une solution pour généraliser la class ?
Merci encore pour ta réponse.