Задать вопрос

Возможно ли прекратить виполнения дальнейших методов класса в конструкторе?

Пример кода:
$obj = new Class();
$obj->method_1()->method_2()->...method_n();
Припустим в конструкторе прошли проверки которые нас не устраивают и дальнейшее выполнение методов класса нам не требуется. Можно ли как-то не начинать выполнять дальнейшие методы класса?
  • Вопрос задан
  • 264 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Обычно исключение вызывается. Сделайте булево свойство класса и задавайте его в конструкторе, а в методах выполняйте проверки.
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
Возможно ли прекратить виполнения дальнейших методов класса в конструкторе?

Вы хотите что бы просто методы класса не отрабатывались? такого сделать нельзя, да и это нарушает LSP -принцип. Если в классе по каким-то причинам не возможно выполнить работу кидайте Exception, т.к. в таких случаях код использующий класс должен решать что делать
Ответ написан
Комментировать
@MrTimon
Ну просто отменить выполнение классов нельзя, хотя можно сделать один костыль.

Можно написать простой класс болванку

class Blank {
      public function __call($name, $arguments) {      
          return this;     
      }
}


и потом в конструкторе или в одном из методов возвращать объект этого класса когда Вас не устраивают условия. И тогда все последующие методы будут просто возвращать объект этого класса. Костыль конечно но работать должно )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы