#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:
Это не очень чистое решение. Я бы рассмотрел метод initialize(), который вызывался бы из конструктора. Метод будет делать то же самое, что и ваш конструктор, но будет ‘return’ вместо ‘die’. Или вы могли бы использовать if / else if / else
блок для управления потоком выполнения программы.
Комментарии:
1. Отличный совет с возвратом. Спасибо.
Ответ №2:
Что ж, это, конечно, странная тактика, но я не думаю, что это где-то прямо запрещено. Только дело в том, что класс на самом деле не должен выполнять конструкцию die() . Возможно, только очень специальные классы, такие как обработчики исключений, должны иметь эту привилегию.
Может быть, если вы объясните все это, мы найдем, что еще предложить.