assert
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
- assert_options - Ställ in/hämta de olika påståendeflaggorna
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.