Это плохая практика?

#php #oop

#php #ооп

Вопрос:

Плохая ли практика делать так, как я показываю ниже? Я хочу выполнить next_function_to_do_smth функцию, если в определенной таблице есть строки, и если это так, мы вызываем функцию и используем die для закрытия конструкции. Если нет, мы получаем строки из другой таблицы.

Если это плохая практика, что мне следует использовать вместо нее?

Спасибо.

 class test
{
    function __construct()
    {
        $this->get_mysql_count("mysql query to get COUNT(*) of smth");

        if($this->get_mysql_count > 0)
        {
            $this->next_function_to_do_smth();
            die();
        }

        $this->get_mysql_count("mysql query to get COUNT(*) of smth2");

        if($this->get_mysql_count > 0)
        {
            $this->next_function_to_do_smth2();
            die();
        }     

        //and so on, and so on   
    }
}
  

Комментарии:

1. codereview.stackexchange.com

Ответ №1:

Это не очень чистое решение. Я бы рассмотрел метод initialize(), который вызывался бы из конструктора. Метод будет делать то же самое, что и ваш конструктор, но будет ‘return’ вместо ‘die’. Или вы могли бы использовать if / else if / else блок для управления потоком выполнения программы.

Комментарии:

1. Отличный совет с возвратом. Спасибо.

Ответ №2:

Что ж, это, конечно, странная тактика, но я не думаю, что это где-то прямо запрещено. Только дело в том, что класс на самом деле не должен выполнять конструкцию die() . Возможно, только очень специальные классы, такие как обработчики исключений, должны иметь эту привилегию.

Может быть, если вы объясните все это, мы найдем, что еще предложить.