Imbrication de class en php
Fermé
nickleus
Messages postés
374
Date d'inscription
dimanche 20 janvier 2008
Statut
Membre
Dernière intervention
18 juin 2011
-
13 janv. 2009 à 18:32
nickleus Messages postés 374 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 18 juin 2011 - 14 janv. 2009 à 08:54
nickleus Messages postés 374 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 18 juin 2011 - 14 janv. 2009 à 08:54
A voir également:
- Imbrication de class en php
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- \R php ✓ - Forum PHP
- Classez ces fichiers de la plus petite taille (1) à la plus grande (4). - Forum Bases de données
- Href php ✓ - Forum PHP
3 réponses
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
259
13 janv. 2009 à 19:02
13 janv. 2009 à 19:02
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));
nickleus
Messages postés
374
Date d'inscription
dimanche 20 janvier 2008
Statut
Membre
Dernière intervention
18 juin 2011
5
13 janv. 2009 à 19:30
13 janv. 2009 à 19:30
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.
nickleus
Messages postés
374
Date d'inscription
dimanche 20 janvier 2008
Statut
Membre
Dernière intervention
18 juin 2011
5
14 janv. 2009 à 08:54
14 janv. 2009 à 08:54
autant pour moi... La prochaine fois je réfléchirais 2 fois avant de répondre. En faite le dernier post revient au même de ta solution sauf que je ne vérifie pas si méthode existe.
merci
merci