assertVérifie une assertion
&reftitle.description;
boolassertmixedassertionThrowablestringnulldescription&null;assert
permets de définir des attentes : des assertions qui prennent effet
dans les environnements de développement et de test, mais qui sont optimisées
pour ne pas avoir de coût en production.
Les assertions doivent être utilisées uniquement comme fonctionnalité de débogage.
Un cas d'utilisation pour les assertions est de servir de vérifications de cohérence
pour des préconditions qui devraient toujours être &true;, et si elles ne sont pas respectées,
cela indique des erreurs de programmation.
Un autre cas d'utilisation est de garantir la présence de certaines fonctionnalités telles que
des fonctions d'extension ou certaines limites et fonctionnalités du système.
Comme les assertions peuvent être configurées pour être éliminées, elles ne doivent
pas être utilisées pour des opérations normales en cours d'exécution,
telles que des vérifications des paramètres d'entrée. En règle générale, le code doit se comporter
comme prévu même si la vérification des assertions est désactivée.
assert vérifiera que l'attente donnée dans
assertion est satisfaite.
Si ce n'est pas le cas et donc que le résultat est &false;, elle prendra l'action appropriée
en fonction de la configuration de assert.
Le comportement de assert est dicté par les paramètres INI suivants :
Assert &ConfigureOptions;&Name;&Default;&Description;&Changelog;zend.assertions11 : génère et exécute le code (mode développement)
0 : génère le code mais l'évite au moment de l'exécution
-1 : ne génère pas le code (mode production)
assert.active&true;
Si &false;, assert ne vérifie pas l'attente
et retourne toujours &true;, sans condition.
Obsolète à partir de PHP 8.3.0.
assert.callback&null;
Une fonction définie par l'utilisateur à appeler lorsqu'une assertion échoue.
Sa signature devrait être :
voidassert_callbackstringfileintlinenullassertionstringdescription
Antérieur à PHP 8.0.0, la signature de la fonction de rappel devrait être :
voidassert_callbackstringfileintlinestringassertionstringdescription
Obsolète à partir de PHP 8.3.0.
assert.exception&true;
Si &true;, lancera une AssertionError si l'attente n'est pas respectée.
Obsolète à partir de PHP 8.3.0.
assert.bail&false;
Si &true;, interrompra l'exécution du script PHP si l'attente n'est pas respectée.
Obsolète à partir de PHP 8.3.0.
assert.warning&true;
Si &true;, émettra un E_WARNING si l'attente n'est pas respectée.
Ce paramètre INI est inefficace si
assert.exception
est activé.
Obsolète à partir de PHP 8.3.0.
&reftitle.parameters;
assertion
Ceci est une expression quelconque qui retourne une valeur, qui sera exécutée
et dont le résultat sera utilisé pour indiquer si l'assertion a réussi ou échoué.
Antérieur à PHP 8.0.0, si assertion était une
string, elle était interprétée comme du code PHP et exécutée via
eval.
Cette chaîne était transmise à la fonction de rappel en tant que troisième argument.
Ce comportement était OBSOLÈTE dans PHP 7.2.0,
et est SUPPRIMÉ à partir de PHP 8.0.0
description
Si description est une instance de
Throwable, elle sera lancée uniquement si
assertion est exécutée et échoue.
À partir de PHP 8.0.0, cela est fait avant d'appeler
la fonction de rappel d'assertion éventuellement défini
À partir de PHP 8.0.0, l'objet &object; sera lancé indépendamment de la configuration de
assert.exception.
À partir de PHP 8.0.0, le paramètre
assert.bail
n'a aucun effet dans ce cas.
Si description est une &string;, ce message
sera utilisé si une exception ou un avertissement est émis.
Une description optionnelle, qui sera incluse dans le message d'échec si
l'assertion échoue.
Si description est omis.
Une description par défaut équivalente au code source de l'appel de
assert est créée au moment de la compilation.
&reftitle.returnvalues;
assert renverra toujours &true; si au moins l'une des conditions suivantes est vraie :
zend.assertions=0zend.assertions=-1assert.exception=1assert.bail=1Un objet d'exception personnalisé est passé à description.
Si aucune des conditions n'est vraie, assert renverra &true; si
assertion est vrai, et &false; sinon.
&reftitle.changelog;
&Version;&Description;8.3.0
Toutes les configurations INI assert. ont été dépréciées.
8.0.0
La fonction assert n'évaluera plus les arguments de type string,
au lieu de cela, ils seront traités comme tout autre argument.
assert($a == $b) devrait être utilisé à la place du assert('$a == $b').
La directive assert.quiet_eval &php.ini; et la constante ASSERT_QUIET_EVAL
ont également été supprimées, car elles n'auraient plus aucun effet.
8.0.0
Si description est une instance de
Throwable, l'objet est lancé si l'assertion échoue, indépendamment de la valeur de
assert.exception.
8.0.0
Si description est une instance de
Throwable, aucune fonction de rappel utilisateur
n'est appelée même si elle est définie.
8.0.0
Déclarer une fonction qui s'appelle assert() à
l'intérieur d'un espace de nom n'est plus autorisé, et génère
une E_COMPILE_ERROR.
7.3.0
Déclarer une fonction qui s'appelle assert() à
l'intérieur d'un espace de nom est devenue obsolète. De telles
déclarations génèrent désormais une E_DEPRECATED.
7.2.0
L'utilisation d'une &string; en tant qu'assertion est
est devenue obsolète. Ceci émet désormais une notice
E_DEPRECATED quand
assert.active et
zend.assertions sont tous
les deux définit à 1.
&reftitle.examples;
Exemple d'assert
2);
echo 'Hi!';
?>
]]>
Si les assertions sont activées (zend.assertions=1)
l'exemple ci-dessus afficherait :
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
]]>
Si les assertions sont désactivées (zend.assertions=0 ou zend.assertions=-1)
l'exemple ci-dessus afficherait :
Utilisation d'un message personnalisé
2, "Expected one to be greater than two");
echo 'Hi!';
?>
]]>
Si les assertions sont activées, l'exemple ci-dessus affichera :
l'exemple ci-dessus afficherait :
Si les assertions sont désactivées, l'exemple ci-dessus affichera :
l'exemple ci-dessus afficherait :
Utilisation d'une classe d'exception personnalisée
2, new ArithmeticAssertionError("Expected one to be greater than two"));
echo 'Hi!';
]]>
Si les assertions sont activées, l'exemple ci-dessus affichera :
l'exemple ci-dessus afficherait :
Si les assertions sont désactivées, l'exemple ci-dessus affichera :
&reftitle.seealso;
assert_options