Когда я устанавливаю error_reporting(E_ALL | E_STRICT);
, мой код выдает Undefined variable
ошибок. Я могу решить их, но мне интересно, есть ли разница в скорости или использовании памяти между написанием кода, который проходит строгие проверки, и просто отключением E_STRICT
?
PHP: Есть ли польза от написания строгого кода?
Ответы (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.
используйте приведенный ниже вопрос stackoverflow для дальнейшего ознакомления Какова рекомендуемая настройка error_reporting() для разработки? А как насчет E_STRICT?
меньше ошибок приводит к лучшей скорости; ремонтопригодность повысится; увеличение памяти может быть тоже, потому что журнал не будет флудить