PHP.SU - Функция assert() - проверяет, не является утверждение/assertion ложным (FALSE).

  Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Функции PHP
 
 
Функции PHP » Информационные и опционные функции PHP

assert

Версия: (PHP 4, PHP 5)

assert - проверяет, не является утверждение/assertion ложным (FALSE).

Синтаксис:

bool assert (mixed $assertion [, string $description ])

Параметры:

assertion - Утверждение.

description - Дополнительное описание, которое будет включено в сообщение об ошибке, если проверка assertion завершится неудачей.



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

Версия Описание
5.4.8 Добавлен аргумент description. Также description передается четвертым аргументом в callback-функцию в режиме ASSERT_CALLBACK.

Описание

assert() проверит заданное утверждение assertion и совершит соответствующее действие, если результатом проверки окажется FALSE.

Если assertion задается в виде строки, оно будет рассматриваться функцией assert() как PHP код. Представление assertion в виде строки имеет свои преимущества. Во-первых, выключение проверки утверждений снижает накладные расходы. Во-вторых, сообщения о провале проверки будут содержать само утверждение assertion. То есть, если передать в качестве assertion какое-либо условное выражение, это условие невозможно будет получить в явном виде, в котором оно передавалось в проверяющую функцию, которую вы возможно определили с помощью assert_options(). Это условное выражение будет вычислено и преобразовано в строку до вызова проверяющей функции, соответственно логическое FALSE будет фигурировать в сообщении как пустая строка.

Утверждения должны использоваться только в целях отладки. Их можно использовать для тестирования каких-то условий, которые в штатных ситуациях всегда принимают значение TRUE, обратное должно указывать на программные ошибки. Также их можно использовать, чтобы удостовериться в наличии каких-либо расширений или системных ограничений.

Утверждения не должны использоваться в обычных операциях, таких как проверка входных параметров. Скрипт должен корректно выполняться, если отключить проверку утверждений.

Поведение функции assert() можно изменять с помощью функции assert_options() или заданием .ini-настроек.

Функция assert_options() и директива ASSERT_CALLBACK позволяют задать callback-функцию, которая будет вызываться при провале проверки утверждения.

Возможность вызывать callback-функции из assert() может быть полезна для создания автоматизированных тестовых пакетов. Посредством этих функций можно извлекать код, переданный на проверку вместе с информацией о том, где эта проверка была осуществлена. Подобную информацию можно получить и другими методами, однако использование утверждений быстрей и проще.

Callback-функция должна принимать три аргумента. Первый аргумент должен содержать файл, в котором утверждение не прошло проверку. Второй аргумент отвечает за номер строки в этом файле. В третьем аргументе будет передаваться выражение, содержащее ошибку (если таких несколько, строковые значение, вроде 1 или "два" не будут передаваться через этот аргумент). Пользователи PHP версий 5.4.8 и выше могут задать четвертый необязательный аргумент description, который будет также передан в функцию assert().

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

FALSE в случае провала проверки, TRUE в остальных случаях.

Примеры:

Пример 1 Обработка ошибочного утверждения пользовательским обработчиком

PHP: скопировать код в буфер обмена
  1. // Активируем проверку утверждений и сделаем его фоновым
  2. assert_options(ASSERT_ACTIVE, 1);
  3. assert_options(ASSERT_WARNING, 0);
  4. assert_options(ASSERT_QUIET_EVAL, 1);
  5.  
  6. // Создадим функцию обработчик
  7. function my_assert_handler($file, $line, $code)
  8. {
  9.     echo "<hr>Проверка утвеждения провалена:
  10.        Файл '$file'        Строка '$line'        Код '$code'<br /><hr />";
  11. }
  12.  
  13. // Зададим callback-функцию
  14. assert_options(ASSERT_CALLBACK, 'my_assert_handler');
  15.  
  16. // Создадим заведомо неверную команду
  17. assert('mysql_query("")');
PHP: скопировать код в буфер обмена
  1. // Активируем утверждение и переводим в тихий режим
  2. assert_options(ASSERT_ACTIVE, 1);
  3. assert_options(ASSERT_WARNING, 0);
  4. assert_options(ASSERT_QUIET_EVAL, 1);
  5.  
  6. // Создаем обработчик
  7. function my_assert_handler($file, $line, $code, $desc = null)
  8. {
  9.     echo "Проверка завершилась неудачей в $file:$line: $code";
  10.     if ($desc) {
  11.         echo ": $desc";
  12.     }
  13.     echo "\n";
  14. }
  15.  
  16. // Задаем callback-функцию
  17. assert_options(ASSERT_CALLBACK, 'my_assert_handler');
  18.  
  19. // Спровоцируем ошибку для проверки
  20. assert('2 < 1');
  21. assert('2 < 1', 'Два меньше одного');

Результат выполнения данного примера:
  1.  
  2. Assertion failed at test.php:21: 2 < 1
  3. Assertion failed at test.php:22: 2 < 1: Два меньше одного
  4.  

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

assert_options() - устанавливает/получает различные флаги утверждения.


 Функции по алфавиту 
   Содержание   
 Функции по категориям 

Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS