Я новичок в использовании PHP и изучения его, читая документацию по php.net— в настоящее время страница для утверждают () знать о тех утверждают () а также assert_options () функции, но это не объясняет Зачем мы используем их и что эти функции делают простыми словами. Кто-нибудь может сказать, что делают эти функции и почему мы используем их в PHP?
Assert()
это умная функция, которая работает в том же ключе, что и наши операторы печати, но они имеют какой-либо эффект, только если определенное условие не соответствует. По существу, assert()
используется, чтобы сказать «Это утверждение должно быть правдой — если это не так, пожалуйста, скажите мне». Рассмотрим следующий пример:
<?php
print "Stage 1\n";
assert(1 == 1);
print "Stage 2\n";
assert(1 == 2);
print "Stage 3\n";
?>
Здесь у нас есть два assert()
s, с первым вызовом, утверждающим, что один должен быть равен единице, и вторым вызовом, утверждающим, что один должен быть равен двум. Поскольку невозможно переопределить константы типа 1 и 2, первое assert()
всегда будет оцениваться как true, а второй всегда будет оцениваться как false. Вот вывод из скрипта:
Стадия 1 Стадия 2 Предупреждение: assert ()
[http://www.php.net/function.assert]: Утверждение не удалось в
/home/paul/sandbox/php/assert.php в строке 5Этап 3
Обратите внимание, что первый assert()
вообще не виден в выводе, потому что оценивается true
тогда как второй assert()
оценивается в false
так что мы получаем warning
о assertion failure
, Также обратите внимание, что мы видим "Stage 3"
после утверждения failure warning
потому что скрипт продолжает выполняться после сбоя. Пока утверждения верны, они не влияют на выполнение скрипта, что означает, что вы можете вставлять их в целях отладки и не беспокоиться об их удалении после завершения отладки.
Если вы беспокоитесь о том, что ваши утверждения могут замедлить выполнение, которое, хотя скорость попадания будет минимальной, по-прежнему вызывает озабоченность, вы можете отключить выполнение assert()
используя assert_options()
функция или путем установки assert.active
Выкл в вашем файле php.ini. Если вы хотите использовать assert_options()
Он принимает два параметра — параметр для установки и значение, которое вы хотите установить — и существует множество способов сделать assert () более мощным.
Обратите внимание, что все эти параметры могут быть установлены в вашем php.ini
файл, чтобы они всегда были в силе — ключевые параметры для изменения assert.active, assert.warning, assert.bail, assert.quiet_eval, and assert_callback
,
ASSERT_CALLBACK
Это очень полезная опция, так как она позволяет вам написать обработчик ошибок, когда ваш код не соответствует утверждению. Он принимает имя строки функции для выполнения в случае сбоя утверждений, а определенная вами функция должна принимать три параметра: один для хранения файла, в котором произошло утверждение, один для хранения строки и один для хранения выражения. Использование всех трех вместе в вашей функции обратного вызова позволяет генерировать значимые сообщения об ошибках, которые вы можете легко отладить. Рассмотрим этот фрагмент кода:
<?php
function assert_failed($file, $line, $expr) {
print "Assertion failed in $file on line $line: $expr\n";
}
assert_options (ASSERT_CALLBACK, 'assert_failed');
assert_options (ASSERT_WARNING, 0);
$foo = 10;
$bar = 11;
assert('$foo > $bar');
?>
Ref:
http://www.hackingwithphp.com/19/8/3/making-assertions
Пример из официальной документации
assert_options
— Установить / получить различные флаги assert
Пример # 1 Пример использования assert_options ()
<?php
// This is our function to handle
// assert failures
function assert_failure()
{
echo 'Assert failed';
}
// This is our test function
function test_assert($parameter)
{
assert(is_bool($parameter));
}
// Set our assert options
assert_options(ASSERT_ACTIVE, true);
assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_WARNING, false);
assert_options(ASSERT_CALLBACK, 'assert_failure');
// Make an assert that would fail
test_assert(1);
// This is never reached due to ASSERT_BAIL
// being true
echo 'Never reached';
?>
Согласно документации PHP assert()
assert()
, assert_options()
. Условие преобразуется в строку перед вызовом этой функции-обработчика, а логическое значение FALSE преобразуется в пустую строку.Assertions
следует использовать как debugging
только функция Вы можете использовать их для проверок работоспособности, которые проверяют условия, которые всегда должны быть ИСТИНА, и которые указывают на некоторые ошибки программирования, если нет, или проверять наличие определенных функций, таких как функции расширения или определенные системные ограничения и функции.Assertions
не должен использоваться для обычных операций во время выполнения, таких как input parameter
чеки. Как правило, ваш код всегда должен работать правильно, если проверка утверждений не активирована.assert()
может быть настроен assert_options()
или .ini-settings
описанный в той странице руководства функций. assert_options()
функция и / или ASSERT_CALLBACK
Директива конфигурации позволяет установить функцию обратного вызова для обработки ошибочных утверждений.assert()
обратные вызовы особенно полезны для создания автоматизированных наборов тестов, поскольку они позволяют легко захватить код, переданный утверждению, вместе с информацией о том, где было сделано утверждение. Хотя эта информация может быть получена с помощью других методов, использование утверждений делает ее намного быстрее и проще! assert()
Функция — это хороший способ гарантировать выполнение определенных условий на протяжении всего жизненного цикла вашего кода. Цитировать Эта статья Пол Хадсон:
По сути, assert () используется, чтобы сказать: «Это утверждение должно быть правдой — если это не так, пожалуйста, скажите мне».
Чтобы включить обработку утверждений, используйте assert_options(ASSERT_ACTIVE)
, а также использовать assert_options()
с другими аргументами для управления тем, что происходит при сбое утверждений (например, прекращение выполнения сценария PHP при сбое подтверждения, вызов функции-обработчика, которую можно использовать для отправки электронных писем, регистрации данных в файлах и / или таблицах базы данных и т. д.). Обратитесь к параметры раздел для списка всех вариантов и их результатов.
Попробуйте некоторые варианты в этот пример детской площадки.
Читать эта статья для получения дополнительной информации об обеих из этих функций.