Кажется, что часто я хочу выполнить некоторые методы из класса, когда я его назову, и выбрать, какая функция будет зависеть от некоторого условия. Это заставляет меня писать классы, как в случае 1, потому что это позволяет мне быстро включить их функциональность. Альтернативой может быть случай 2, который может занять много времени, если есть много кода, а также означает, что еще один код записывается дважды, когда я бросаю класс на разные страницы.Должны ли условные выражения проходить внутри или вне классов?
Сказав это, случай 1 чувствует себя очень неправильно по какой-то причине, что я не могу наложить пальцем. По-моему, я действительно не видел таких классов, как это.
Есть ли что-то неправильное в таких классах, как в случае 1 или в случае 2-го варианта? Или есть лучший способ? Каковы преимущества и недостатки каждого?
Случай 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);
Случай 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();