PHP: есть ли польза от написания строгого кода?
Когда я установил error_reporting(E_ALL | E_STRICT);
мой код выдает Undefined variable
ошибки. Я могу их решить, но мне интересно, есть ли разница в скорости или использовании памяти между написанием кода, который проходит строгие проверки, и простым переключением E_STRICT
выкл?
3 ответа
Там нет механического преимущества. Вы, однако, защищены от выполнения действительно обычных, действительно глупых вещей, таких как не всегда инициализация переменной перед ее использованием - потому что с E_STRICT
на, PHP будет генерировать ошибку вместо того, чтобы позволить функциям сломаться потенциально-катастрофическим и, вероятно, невидимым способом.
Например, вполне возможно, что приложение, поддерживаемое базой данных, использует переменную, которая не инициализируется всеми возможными путями выполнения:
// Adds an allergy to the user's records
public function Add($AllergyID) {
$Patient = $this->Patient->Load();
if ($Patient->Insurance->StartDate < now()) {
$Allergies = $Patient->Allergies->Get();
$Allergies[] = $AllergyID;
}
$Patient->Allergies->Set($Allergies);
}
В конце концов он не инициализируется, и чья-то таблица медицинских записей молча усекается.
Короче говоря, вы всегда должны развиваться со всеми предупреждениями: это ваша первая линия защиты. Однако, когда приходит время перевести ваш код в рабочий процесс, вам абсолютно необходимо отключить отчеты об ошибках . Вы не хотите, чтобы злонамеренные пользователи получали представление о внутренней работе вашего приложения или, что еще хуже, о вашей базе данных.
Преимущества в скорости нет, но при использовании PHP 5.2.0. или прежде чем использовать E_ALL | E_STRICT для целей разработки.
Но для PHP 5.2.0 выше E_STRICT включен в сам E_ALL.
Или вы можете использовать error_reporting(-1); Который всегда будет включать все, даже если они присутствуют в E_ALL.
используйте приведенный ниже вопрос stackru для дальнейшей справки. Каков рекомендуемый параметр error_reporting() для разработки? Как насчет E_STRICT?
Меньше ошибок приводит к лучшей скорости; ремонтопригодность будет увеличена; возможно, улучшение памяти тоже, потому что журнал не будет сброшен