PHP 8.6.0 Beta 1 is available for testing

assert_options

(PHP 4, PHP 5, PHP 7, PHP 8)

assert_optionsУстанавливает или получает флаги проверки утверждения

Внимание

Начиная с PHP 8.3.0 функция УСТАРЕЛА. Полагаться на функцию настоятельно не рекомендуют.

Описание

function assert_options(int $option, mixed $value = ?): mixed

Функция устанавливает опции, которые управляют проверкой утверждений функцией assert() , или запрашивает текущие значения опций.

Замечание: Разработчики не рекомендуют пользоваться функцией assert_options() и взамен предлагают устанавливать директиву файла php.ini zend.assertions функцией ini_set() и получать директиву assert.exception функцией ini_get() .

Список параметров

option

Настройки механизма проверки утверждений
Настройка INI-параметр Значение по умолчанию Описание
ASSERT_ACTIVE assert.active 1 Включает механизм проверки утверждений
ASSERT_EXCEPTION assert.exception 1 Выбрасывает исключение AssertionError для каждого неудачного утверждения
ASSERT_WARNING assert.warning 1 Выводит PHP-предупреждение для каждой неудачной проверки
ASSERT_BAIL assert.bail 0 Завершает выполнение, если проверка не удалась
ASSERT_QUIET_EVAL assert.quiet_eval 0 Отключает директиву error_reporting во время проверки утверждения. С PHP 8.0.0 опцию удалили
ASSERT_CALLBACK assert.callback (null ) Callback-функция, которая вызывается для утверждений, которые не прошли проверку

value

Необязательное новое значение опции.

Требование к сигнатуре callback-функции, которую установили опцией ASSERT_CALLBACK или через директиву assert.callback:

function assert_callback(
string $file,
int $line,
? string $assertion,
string $description = ?
): void
file
Файл, в котором вызвали функцию assert() .
line
Строка, в которой вызвали функцию assert() .
assertion
До PHP 8.0.0, утверждение, которое передавали в функцию assert() , но только если утверждение задавали как строку. При передаче утверждения в виде логического условия параметр будет пустой строкой. Начиная с PHP 8.0.0 значение параметра всегда равно null .
description
Описание, которое передали в функцию assert() .
Передача пустой строки в параметр value сбрасывает callback-функцию проверки неудачных утверждений.

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

Функция возвращает исходное значение опции.

Ошибки

Функция выбрасывает исключение ValueError , если в параметр option передали недопустимую опцию.

Список изменений

Версия Описание
8.3.0 Функция assert_options() устарела.
8.0.0 Теперь функция выбрасывает исключение ValueError , если в параметр option передали недопустимую опцию; раньше возвращалось значение false .

Примеры

Пример #1 Пример установки опций проверки утверждений функцией assert_options()

<?php
// Функция для обработки утверждений,
// которые не прошли проверку
function function assert_failure($file, $line, $assertion, $message)
{
 echo "Проверка утверждения $assertion в файле $file на строке $line не прошла проверку: $message";
}
// Тестовая функция
function test_assert($parameter)
{
 assert(is_bool($parameter));
}
// Настройки проверки
assert_options(ASSERT_ACTIVE, true);
assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_WARNING, false);
assert_options(ASSERT_CALLBACK, 'assert_failure');
// Заведомо ошибочное утверждение
test_assert(1);
// Этот код не выполнится, пока значение опции ASSERT_BAIL
// равно true
echo 'Никогда не выведется';
?>

Смотрите также

  • assert() - Проверяет утверждение

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
5
Fr?d?ric Bouchery
23 years ago
Here is an exemple how to use the assertion callback function :
<?php
 assert_options( ASSERT_CALLBACK, 'assert_callback');
 function assert_callback( $script, $line, $message ) {
 echo 'You have a design error in your script <b>', $script,'</b> : line <b>', $line,'</b> :<br />';
 echo '<b>', ereg_replace( '^.*//\*', '', $message ), '</b><br /><br />';
 echo 'Open the source file and check it, because it\'s not a normal behaviour !';
 exit;
 }
 $x = 3;
 assert('is_integer( $x ) && ($x >= 0) && ($x <= 10); //* $x must be an integer value from 0 to 10' );
 echo "0 <= $x <= 10";
?>

assertion is usefull for "design by contract" methodology ...
+Добавить

AltStyle によって変換されたページ (->オリジナル) /