PHP 7 - Ожидания

Expectationsявляются обратно совместимым усовершенствованием старой функции assert (). Ожидание позволяет использовать утверждения с нулевой стоимостью в производственном коде и предоставляет возможность генерировать настраиваемые исключения, когда утверждение не выполняется. assert () теперь является языковой конструкцией, где первый параметр является выражением по сравнению с проверяемой строкой или логическим значением.

Директивы конфигурации для assert ()

Директива Значение по умолчанию Возможные значения
zend.assertions 1

1 - сгенерировать и выполнить код (режим разработки)

0 - генерировать код, но обходить его во время выполнения

-1 - не генерировать код (производственный режим)

assert.exception 0

1 - throw, когда утверждение не выполняется, либо путем выброса объекта, указанного как исключение, либо путем создания нового AssertionError объект, если исключение не было предоставлено.

0 - используйте или сгенерируйте Throwable, как описано выше, но генерирует предупреждение только на основе этого объекта, а не бросает его (совместимо с поведением PHP 5)

Параметры

  • assertion- Утверждение. В PHP 5 это должна быть либо строка для оценки, либо логическое значение для проверки. В PHP 7 это также может быть любое выражение, возвращающее значение, которое будет выполнено, и результат будет использоваться, чтобы указать, было ли утверждение успешным или неудачным.

  • description - Необязательное описание, которое будет включено в сообщение об ошибке, если утверждение не выполняется.

  • exception - В PHP 7 вторым параметром может быть Throwable объект вместо описательной строки, и в этом случае это будет объект, который будет брошен, если утверждение не выполняется и assert.exception директива конфигурации включена.

Возвращаемые значения

FALSE если утверждение ложно, TRUE иначе.

пример

<?php
   ini_set('assert.exception', 1);

   class CustomError extends AssertionError {}

   assert(false, new CustomError('Custom Error Message!'));
?>

Он производит следующий вывод браузера -

Fatal error: Uncaught CustomError: Custom Error Message! in...