En PHP, le mode normes strictes peut émettre des avertissements lors du passage de valeurs non variables par référence. Un exemple courant de ceci est lors de l'utilisation de la fonction array_shift().
L'avertissement « Normes strictes : seules les variables doivent être transmises par référence » apparaît lorsque array_shift( ) est utilisé avec une valeur non variable passée en argument. Par exemple :
$instance = new MyClass(); $el = array_shift($instance->find(...)); // Warning
En revanche, lorsque array_shift() est appelé avec une variable contenant un tableau, aucun avertissement n'est généré :
function get_arr() { return [1, 2]; } $el = array_shift(get_arr()); // No warning
L'avertissement peut prêter à confusion car array_shift() est une fonction qui renvoie une valeur de tableau. Cependant, en mode strict, PHP considère la valeur de retour de array_shift() comme une non-variable.
Pour résoudre l'avertissement en mode strict, il existe deux options :
Par exemple :
// Modify Method Signature function get_arr() { return [1, 2]; } $instance = new MyClass(); $el = array_shift($instance->get_arr()); // Use Intermediate Variable $el = array_shift($instance->get_arr() ?: []);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!