assert

Från Wiki.linux.se
Version från den 13 oktober 2024 kl. 05.07 av Admin (diskussion | bidrag) (Skapade sidan med '== assert == <small>(PHP 4, PHP 5, PHP 7, PHP 8)</small> '''assert''' — Kontrollerar ett påstående === Beskrivning === <pre>assert(mixed $assertion, Throwable|string|null $description = null): bool</pre> assert() möjliggör att definiera förväntningar: påståenden som gäller i utvecklings- och testmiljöer, men som optimeras bort för att inte ha någon kostnad i produktionsmiljöer. Påståenden bör endast användas som en felsökningsfunktion. Ett användn...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

assert

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

assert — Kontrollerar ett påstående

Beskrivning

assert(mixed $assertion, Throwable|string|null $description = null): bool

assert() möjliggör att definiera förväntningar: påståenden som gäller i utvecklings- och testmiljöer, men som optimeras bort för att inte ha någon kostnad i produktionsmiljöer.

Påståenden bör endast användas som en felsökningsfunktion. Ett användningsområde för dessa är att fungera som rimlighetskontroller för förutsättningar som alltid bör vara sanna och där, om dessa inte upprätthålls, det indikerar programmeringsfel. Ett annat användningsområde är att säkerställa förekomsten av vissa funktioner såsom tilläggsfunktioner eller systembegränsningar och -funktioner.

Eftersom påståenden kan konfigureras att elimineras, bör de inte användas för vanliga runtime-operationer som att kontrollera indata-parametrar. Som en tumregel bör kod fungera som förväntat även om påståendekontroller är inaktiverade.

assert() kommer att kontrollera att förväntningen som ges i assertion håller. Om så inte är fallet, och resultatet är falskt, kommer den att vidta lämplig åtgärd beroende på hur assert() är konfigurerat.

Beteendet hos assert() styrs av följande INI-inställningar:

Namn Standard Beskrivning Ändringslogg
zend.assertions 1

1: generera och exekvera kod (utvecklingsläge) 0: generera kod men hoppa över den vid körning -1: generera inte kod (produktionsläge)

assert.active true Om false, kontrollerar assert() inte förväntningen och returnerar true ovillkorligen. Föråldrad från och med PHP 8.3.0.
assert.callback null

En användardefinierad funktion som anropas när ett påstående misslyckas. Dess signatur bör vara:

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

Före PHP 8.0.0 bör signaturen vara:

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

Föråldrad från och med PHP 8.3.0.

assert.exception true Om true, kastar den ett AssertionError om förväntningen inte upprätthålls. Föråldrad från och med PHP 8.3.0.
assert.bail false Om true, avbryter exekveringen av PHP-skriptet om förväntningen inte upprätthålls. Föråldrad från och med PHP 8.3.0.
assert.warning true Om true, skickas en E_WARNING om förväntningen inte upprätthålls. Denna INI-inställning är ineffektiv om assert.exception är aktiverad. Föråldrad från och med PHP 8.3.0.

Parametrar

assertion
Detta är vilket uttryck som helst som returnerar ett värde, vilket kommer att exekveras och resultatet används för att indikera om påståendet lyckades eller misslyckades.

Varning: Före PHP 8.0.0, om assertion var en sträng tolkades det som PHP-kod och exekverades via eval(). Denna sträng skulle skickas till callback som tredje argument. Detta beteende föråldrades i PHP 7.2.0 och togs bort i PHP 8.0.0.

description
Om description är en instans av Throwable, kommer den att kastas endast om påståendet exekveras och misslyckas.

Notera: Från och med PHP 8.0.0 görs detta innan den eventuellt definierade påstående-callbacken anropas.

Returnerar

assert() returnerar alltid true om minst ett av följande är sant:

  • zend.assertions=0
  • zend.assertions=-1
  • assert.exception=1
  • assert.bail=1
  • Ett anpassat undantagsobjekt skickas till description.

Om inget av villkoren är sant returnerar assert() true om assertion är sant och false annars.

Ändringslogg

Version Beskrivning
8.3.0 Alla assert.-INI-inställningar har föråldrats.
8.0.0 assert() kommer inte längre att utvärdera strängargument, utan behandlas som vilket annat argument som helst. Använd assert($a == $b) istället för assert('$a == $b'). Direktivet assert.quiet_eval och konstanten ASSERT_QUIET_EVAL har också tagits bort, eftersom de inte längre har någon effekt.
8.0.0 Om description är en instans av Throwable, kommer objektet att kastas om påståendet misslyckas, oavsett värdet av assert.exception.

Exempel

Exempel #1: assert() exempel

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

Om påståenden är aktiverade (zend.assertions=1) kommer exemplet ovan att ge:

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

Om påståenden är inaktiverade (zend.assertions=0 eller zend.assertions=-1) kommer exemplet ovan att ge:

Hej!

Se även

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.assert.php

PHP Funktioner Funktionsreferens


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp och Datorservice som har sponsrat Linux.se med webserver.