PHP: Есть ли польза от написания строгого кода?

Когда я устанавливаю error_reporting(E_ALL | E_STRICT);, мой код выдает Undefined variable ошибок. Я могу решить их, но мне интересно, есть ли разница в скорости или использовании памяти между написанием кода, который проходит строгие проверки, и просто отключением E_STRICT?


person boksiora    schedule 23.08.2012    source источник
comment
Никогда, никогда, никогда, разрабатывайте без error_reporting(E_ALL)   -  person amd    schedule 23.08.2012


Ответы (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);
}

В конце концов он не инициализируется, и чья-то таблица медицинских записей незаметно усекается.

Короче говоря, вы всегда должны развиваться со всеми предупреждениями: это ваша первая линия обороны. Однако, когда придет время перевести код в рабочую среду, вы обязательно захотите отключить отчеты об ошибках. Вы не хотите, чтобы злонамеренные пользователи проникли в суть внутренней работы вашего приложения, или хуже того. — ваша база данных.

person Winfield Trail    schedule 23.08.2012

НЕТ преимущества скорости, но при использовании 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?

person Nishant    schedule 23.08.2012

меньше ошибок приводит к лучшей скорости; ремонтопригодность повысится; увеличение памяти может быть тоже, потому что журнал не будет флудить

person TheHe    schedule 23.08.2012