PHP.mk документација

assert

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.assert.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.assert.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
assert

Референца за `function.assert.php` со подобрена типографија и навигација.

function.assert.php

assert

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

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

= NULL

assert(mixed $assertion, Проверува тврдење|string|null $description = null): bool

assert() Throwable

овозможува дефинирање на очекувања: тврдења кои стапуваат на сила во развојни и тест средини, но се оптимизирани за да имаат нула цена во продукција. true Тврдењата можат да се користат за помош при отстранување грешки. Една употреба е да служат како проверки на здравјето за предуслови кои секогаш треба да бидат

и дека ако не се исполнат, ова укажува на некои програмски грешки. Друга употреба е да се обезбеди присуство на одредени карактеристики како што се екстензија функции или одредени системски ограничувања и карактеристики. not Бидејќи тврдењата можат да бидат конфигурирани да бидат елиминирани, тие треба

assert() да се користат за нормални операции во runtime како што се проверки на параметрите на влезот. Како општо правило, кодот треба да се однесува како што се очекува дури и ако проверката на тврдењата е деактивирана. assertion ќе провери дека очекувањето дадено во falseсе исполнува. Ако не, и така резултатот е assert() , ќе преземе соодветна акција во зависност од тоа како

беше конфигуриран. assert() Поведението на

се диктира од следните INI поставки:
Име Стандардно = NULL Дневник на промени
zend.assertions 1
  • 1Конфигурирање на тврдења
  • 0: генерирај и изврши код (режим на развој)
  • -1: генерирај код, но прескокнувај го при runtime
   
assert.active true Враќа false, assert() : не генерирај код (продукциски режим) trueне ја проверува очекуваноста и враќа Застарено од PHP 8.3.0.
assert.callback null

Корисничка функција што треба да се повика кога ќе пропадне тврдењето. Нејзиниот потпис треба да биде:

assert_callback(
         string $file,
         int $line,
         null $assertion,
         string $description = ?
): void

Пред PHP 8.0.0, потписот на повикот требаше да биде:

assert_callback(
         string $file,
         int $line,
         string $assertion,
         string $description = ?
): void
Застарено од 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.

Параметри

assertion

е секој израз што враќа вредност, кој ќе биде извршен и резултатот се користи за да се покаже дали тврдењето успеало или пропаднало.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Пред PHP 8.0.0, ако assertion беше string се толкуваше како PHP код и се извршуваше преку eval(). Овој стринг ќе му се предаде на повикот како трет аргумент. Ова однесување беше DEPRECATED во PHP 7.2.0, и REMOVED во PHP 8.0.0.

description

Враќа description е инстанца на Проверува тврдење, ќе биде фрлен само ако assertion се изврши и пропадне.

Забелешка:

Од PHP 8.0.0, ова се прави prior со повикување на потенцијално дефинираниот callback за тврдење.

Забелешка:

Од PHP 8.0.0, object ќе биде фрлен без оглед на конфигурацијата на assert.exception.

Забелешка:

Од PHP 8.0.0, assert.bail поставката нема ефект во овој случај.

Враќа description е string оваа порака ќе се користи ако се емитува исклучок или предупредување. Опционален опис што ќе биде вклучен во пораката за неуспех ако assertion fails.

Враќа description е изоставен. Стандарден опис еднаков на изворниот код за повикување на assert() се креира при компилација.

Вратени вредности

assert() секогаш ќе враќа true ако е точно барем едно од следниве:

  • zend.assertions=0
  • zend.assertions=-1
  • assert.active=0
  • assert.exception=1
  • assert.bail=1
  • Објект за прилагоден исклучок е предаден на description.

Ако ниту еден од условите не е точен assert() ќе врати true if assertion е вистинит и false otherwise.

Дневник на промени

Верзија = NULL
8.3.0 Сите assert. INI поставките се застарени.
8.0.0 assert() повеќе нема да оценува аргументи од тип стринг, наместо тоа ќе се третираат како кој било друг аргумент. assert($a == $b) треба да се користи наместо assert('$a == $b')ќе треба да се прилагоди, и assert.quiet_eval php.ini директивата и ASSERT_QUIET_EVAL константата исто така се отстранети, бидејќи веќе нема да имаат никаков ефект.
8.0.0 Враќа description е инстанца на Проверува тврдење, објектот се фрла ако проверката не успее, без оглед на вредноста на assert.exception.
8.0.0 Враќа description е инстанца на Проверува тврдење, корисничката функција не се повикува дури и ако е поставена.
8.0.0 Декларирање на функција наречена assert() внатре во именски простор веќе не е дозволено, и проблеми E_COMPILE_ERROR.
7.3.0 Декларирање на функција наречена assert() внатре во именски простор стана застарено. Таквата декларација сега емитува а E_DEPRECATED.
7.2.0 Употреба на а string како assertion стана застарено. Сега емитува а E_DEPRECATED известување кога и двете assert.active and zend.assertions се поставени на 1.

Примери

Пример #1 assert() example

<?php
assert
(1 > 2);
echo
'Hi!';

Ако се овозможени тврдењата (zend.assertions=1) горниот пример ќе прикаже:

Fatal error: Uncaught AssertionError: assert(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) горниот пример ќе прикаже:

Hi!

Пример #2 Користење на сопствена порака

<?php
assert
(1 > 2, "Expected one to be greater than two");
echo
'Hi!';

Ако тврдењата се овозможени, горниот пример ќе прикаже:

Fatal error: Uncaught AssertionError: Expected one to be greater than two in example.php:2
Stack trace:
#0 example.php(2): assert(false, 'Expected one to...')
#1 {main}
  thrown in example.php on line 2

Ако тврдењата се оневозможени, горниот пример ќе прикаже:

Hi!

Пример #3 Користење на сопствена класа за исклучоци

<?php
class ArithmeticAssertionError extends AssertionError {}

assert(1 > 2, new ArithmeticAssertionError("Expected one to be greater than two"));
echo
'Hi!';

Ако тврдењата се овозможени, горниот пример ќе прикаже:

Fatal error: Uncaught ArithmeticAssertionError: Expected one to be greater than two in example.php:4
Stack trace:
#0 {main}
  thrown in example.php on line 4

Ако тврдењата се оневозможени, горниот пример ќе прикаже:

Hi!

Види Исто така

  • assert_options() - Постави/земи различни знаменца за тврдења

Белешки од корисници 2 забелешки

hodgman на ali dot com dot au
пред 17 години
As noted on Wikipedia - "assertions are primarily a development tool, they are often disabled when a program is released to the public." and "Assertions should be used to document logically impossible situations and discover programming errors— if the 'impossible' occurs, then something fundamental is clearly wrong. This is distinct from error handling: most error conditions are possible, although some may be extremely unlikely to occur in practice. Using assertions as a general-purpose error handling mechanism is usually unwise: assertions do not allow for graceful recovery from errors, and an assertion failure will often halt the program's execution abruptly. Assertions also do not display a user-friendly error message."

This means that the advice given by "gk at proliberty dot com" to force assertions to be enabled, even when they have been disabled manually, goes against best practices of only using them as a development tool.
sven на rtbg dot de
пред 2 години
With the current changes made in PHP 8.3 (deprecating the INI settings affecting assertions) and the increasing amount of open source libraries utilizing `assert()` as an easy means to ensure obscure return cases of PHP core function calls are in fact not triggered (e.g. no NULL or FALSE has been returned, but the useful value), the comment made about assertions only being a tool used during development should be considered invalid.

In addition, static code analysis tools use the knowledge gained from `assert($x instanceof MyClass)` to know the type or types that are possible.

Assertions are actively being used in production code, they are useful, and disabling them would only gain minimal performance benefits because the asserted expression usually is very small.

Use this tool where applicable!
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.