PHP 8.4.1 Released!

assert_options

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

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

Внимание

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

Описание

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:

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_option() устарела.
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
4
Fr?d?ric Bouchery
21 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 ...
To Top