assert Проверяет утверждение &reftitle.description; boolassert mixedassertion Throwablestringnulldescription&null; Функция assert — разрешает определение ожиданий: утверждения, которые вступают в силу в средах разработки и тестирования, но оптимизированы так, что в производственной среде имеют нулевую стоимость. Утверждения следует использовать только в качестве отладочной функции. Один из вариантов их использования — проверка на вменяемость предварительных условий, которые всегда должны быть &true; и если они не выполняются, это указывает на ошибки программирования. Другой случай использования — убедиться в наличии определённых возможностей, например, функций модуля или определённых ограничений и возможностей системы. Поскольку утверждения могут быть настроены на отказ от них, их не следует использовать для обычных операций во время выполнения, таких как проверка входных параметров. Как правило, код должен вести себя так, как ожидается, даже если проверка утверждений отключена. Функция assert проверяет, выполняется ли ожидание, заданное в параметре assertion. Если нет, и в результате вернулось значение &false;, то функция assert выполнит заданное конфигурацией действие. Поведение конструкции assert определяется следующими настройками INI: &ConfigureOptions; конструкции assert &Name; &Default; &Description; &Changelog; zend.assertions 1 1: генерирует и выполняет код (режим разработки) 0: генерирует код, но перепрыгивает через него во время выполнения -1: не генерирует код (рабочий режим) assert.active &true; Если &false;, функция assert не проверяет ожидание и возвращает &true;, безоговорочно. Директива устарела начиная с PHP 8.3.0. assert.callback &null; Пользовательская функция, вызываемая при неудачной проверке утверждения. Сигнатура функции должна соответствовать определению: voidassert_callback stringfile intline nullassertion stringdescription До PHP 8.0.0 сигнатура callback-функции должна соответствовать определению: voidassert_callback stringfile intline stringassertion stringdescription Директива устарела начиная с PHP 8.3.0. assert.exception &true; Если &true;, выбрасывается исключение AssertionError, при неудачной проверке утверждения. Директива устарела начиная с PHP 8.3.0. assert.bail &false; Если &true;, выполнение PHP-скрипта прервётся в случае неудачной проверки утверждении. Директива устарела начиная с PHP 8.3.0. assert.warning &true; Если &true;, в случае неудачной проверки утверждения будет выдана ошибка уровня E_WARNING. Эта INI-настройка неэффективна, если включена директива assert.exception. Директива устарела начиная с PHP 8.3.0.
&reftitle.parameters; assertion Любое выражение, которое возвращает значение, которое выполнит функция, а результат использует, чтобы указать, удалась или не удалась проверка утверждения. До версии PHP 8.0.0, если утверждение assertion было строкой (string), утверждение интерпретировалось как PHP-код и выполнялось функцией eval. Эта строка передавалась в callback-функцию как третий аргумент. Это поведение объявили УСТАРЕВШИМ в PHP 7.2.0 и УДАЛИЛИ в PHP 8.0.0. description Если описание description — экземпляр класса Throwable, исключение будет выброшено только тогда, когда проверка утверждения assertion не удастся. Начиная с PHP 8.0.0 это делается до вызова потенциально определённой callback-функции утверждения. Начиная с PHP 8.0.0 объект (&object;) будет выброшен независимо от конфигурации параметра assert.exception. Начиная с PHP 8.0.0 параметр assert.bail не имеет никакого эффекта в этом случае. Если параметр description — строка (&string;), это сообщение будет использоваться в случае исключения или предупреждения. Необязательное описание, которое функция включит в сообщение, если проверка утверждения assertion не удастся. Если параметр description опустили. Во время компиляции создаётся описание по умолчанию, равное исходному коду для вызова assert. &reftitle.returnvalues; Функция assert каждый раз возвращает &true;, если истинно хотя бы одно из следующих утверждений: zend.assertions=0 zend.assertions=-1 assert.exception=1 assert.bail=1 Объект пользовательского исключения передали в параметр description. Если ни одно из условий не истинно, функция assert вернёт &true;, если параметр assertion истинен, иначе вернёт &false;. &reftitle.changelog; &Version; &Description; 8.3.0 Все INI-настройки assert. устарели. 8.0.0 Функция assert больше не будет оценивать строковые аргументы, вместо этого они будут рассматриваться как любой другой аргумент. Вместо assert('$a == $b') следует использовать assert($a == $b). Директива assert.quiet_eval &php.ini; и константа ASSERT_QUIET_EVAL также были удалены, поскольку они больше не будут иметь никакого эффекта. 8.0.0 Если параметр description — экземпляр класса Throwable, объект выбрасывается при неудачной проверке утверждения, независимо от значения опции assert.exception. 8.0.0 Если параметр description — экземпляр класса Throwable, пользовательская callback-функция не вызывается, даже если она установлена. 8.0.0 Объявление функции с именем assert() внутри пространства имён больше не допускается и выдаёт ошибку уровня E_COMPILE_ERROR. 7.3.0 Объявление функции assert() внутри пространства имён устарело. Такое объявление теперь выдаёт ошибку уровня E_DEPRECATED. 7.2.0 Строка (string) как assertion устарела. Теперь выдаётся ошибка уровня E_DEPRECATED, когда для опций assert.active и zend.assertions установили значение 1. &reftitle.examples; Пример использования функции <function>assert</function> 2); echo 'Привет!'; ?> ]]> Если утверждения включены (zend.assertions=1), то пример выше выведет: 2) in example.php:2 Stack trace: #0 example.php(2): assert(false, 'assert(1 > 2)') #1 {main} thrown in example.php on line 2 ]]> Если утверждения отключены (zend.assertions=0 or zend.assertions=-1), то пример выше выведет: Пример пользовательского сообщения 2, "Ожидается, что один больше двух"); echo 'Привет!'; ?> ]]> Если утверждения включены пример выше выведет: Если утверждения выключены, то пример выше выведет: Пример использования пользовательского класса исключения 2, new ArithmeticAssertionError("Ожидается, что один больше двух")); echo 'Hi!'; ?> ]]> Если утверждения включены, то пример выше выведет: Если утверждения выключены, пример выше выведет: &reftitle.seealso; assert_options