2010-05-22 1 views
1

Il semble que souvent je voudrai exécuter certaines méthodes d'une classe quand je l'appelle et choisir quelle fonction dépendra de certaines conditions. Cela m'amène à écrire des classes comme dans le cas 1 car cela me permet d'inclure rapidement leurs fonctionnalités. L'alternative serait le cas 2 qui peut prendre beaucoup de temps s'il y a beaucoup de code et signifie aussi que plus de code est écrit deux fois quand je dépose la classe dans différentes pages. Cela dit, le cas n ° 1 est très mauvais pour une raison que je ne peux pas tout à fait mettre le doigt sur. Je n'ai pas vraiment vu de cours écrits comme ça, je suppose.Les expressions conditionnelles doivent-elles être à l'intérieur ou à l'extérieur des classes?

Y a-t-il un problème avec l'écriture de classes comme dans le cas 1 ou est-ce que le cas 2 est supérieur? Ou y a-t-il un meilleur moyen? Quels sont les avantages et les inconvénients de chacun?

Case 1

class Foo { 
    public function __construct($bar) { 
     if($bar = 'action1') $this->method1(); 
     else if($bar = 'action2') $this->method2(); 
     else $this->method1(); 
     } 

    public function method1() { } 
    public function method2() { } 
    } 

$bar = 'action1' 
$foo = new Foo($bar); 

Case 2

class Foo { 
    public function __construct() { } 
    public function method1() { } 
    public function method2() { } 
    } 

$foo = new Foo; 
$bar = 'action1'; 
if($bar == 'action1') $foo->method1(); 
else if($bar == 'action2') $foo->method2(); 
else $foo->method1(); 

Répondre

0

Si l'initialisation d'objet nécessite l'une des méthodes à appeler, puis appeler un. Sinon, la deuxième forme est acceptable.

Questions connexes