Ce face assert
assert este o verificare pentru programator, nu pentru datele utilizatorilor. Scrii în cod ce presupui că e adevărat (de exemplu „prețul nu e negativ”), iar în timpul dezvoltării PHP aruncă AssertionError dacă presupunerea e falsă.
Comportamentul depinde de setarea zend.assertions: 1 (dezvoltare) verifică, -1 (recomandat pe producție) nici nu compilează verificările, deci nu costă nimic. De aceea nu pune în assert cod care trebuie să ruleze.
Parametri
| Parametru | Descriere |
|---|---|
$assertion |
Condiția verificată. |
$description |
Opțional. Mesajul erorii sau o excepție proprie aruncată în loc de AssertionError. |
Ce returnează
true dacă condiția e adevărată (sau dacă verificările sunt dezactivate).
Exemple
Exemplul 1: O presupunere falsă, în timpul dezvoltării
Exemplul a fost rulat cu zend.assertions = 1. Pe un server cu -1 nu se afișează nimic.
<?php
function aplica_reducere(float $pret, float $procent): float
{
assert($procent >= 0 && $procent <= 100, "Procentul trebuie să fie între 0 și 100");
return $pret * (1 - $procent / 100);
}
try {
aplica_reducere(200, 150);
} catch (AssertionError $e) {
echo "AssertionError: " . $e->getMessage();
}
Rezultat
AssertionError: Procentul trebuie să fie între 0 și 100
Greșeli frecvente
- Folosești
assertpentru a valida datele din formulare. Pe producție verificările sunt de obicei oprite și datele greșite trec. Validează cuifși aruncă o excepție. - Pui o operație necesară în condiție:
assert($id = salveaza()). Cuzend.assertions = -1,salveaza()nu mai rulează deloc.
Comenzi înrudite
ini_set / ini_get: Schimbă o setare din php.ini doar pentru scriptul curent (ini_set) sau îi citește valoarea (ini_get).var_dump: Afișează tipul și valoarea exactă a unei variabile. Este principalul instrument de depanare.