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...