Могу ли я преждевременно выйти (вернуться) из конструктора класса? - PullRequest
0 голосов
/ 23 января 2020

Мне нужно досрочно завершить из конструктора класса, если один из аргументов в конструкторе удовлетворяет определенному условию, могу ли я просто использовать return, как в примере ниже, или есть другой способ сделать это?

class Test {

  public function __construct( arg1, arg 2 ) {

    switch case( arg2 ) {
      case 'case1':
        ...do some settings for the code to follow...
      break;
      case 'case2':
        return; // Can I do this?
      break;
    }

    ...Other code to execute if args2 wasn't 'case2'...

  }

}

Спасибо всем, кто ответит.

Редактировать

Для тех, кто может найти вопрос странным: в некоторых языках конструктор должен возвращать специфицированные c значения для фактического создания класса, поэтому я спрашиваю.

1 Ответ

1 голос
/ 23 января 2020

__construct - это просто обычная функция, вызываемая обычным вызовом функции, и да, вы можете return из этой функции в любое время, как и с любой другой функцией. Обратите внимание, что любое значение вас return из __construct будет игнорироваться, но это, очевидно, не имеет значения.

По этой причине (что __construct ничего не возвращает) Я бы воздержался от преждевременного выхода по соображениям читабельности , но для этого нет технических причин. Я бы предпочел шаблон if-this-do-that , чем шаблон if-this-stop-преждевременно для конструктора.

...