Maison > développement back-end > tutoriel php > Pourquoi le mode strict de PHP avertit-il « Seules les variables doivent être transmises par référence » ?

Pourquoi le mode strict de PHP avertit-il « Seules les variables doivent être transmises par référence » ?

DDD
Libérer: 2025-01-01 13:55:19
original
492 Les gens l'ont consulté

Why Does PHP's Strict Mode Warn

Normes strictes : Comprendre l'avertissement « Seules les variables doivent être transmises par référence »

En PHP, le mode strict applique certaines pratiques de programmation pour améliorer qualité et cohérence du code. Une de ces pratiques consiste à éviter de transmettre des valeurs non variables par référence. Cette question explore les raisons de cet avertissement et propose des solutions pour l'éviter.

Le problème : paramètres de référence et valeurs de retour

Considérez l'extrait de code suivant :

$el = array_shift($instance->find(..))
Copier après la connexion

Ce code déclenche l'avertissement de normes strictes "Seules les variables doivent être transmises par référence." Cependant, ce n'est pas le cas du code suivant :

function get_arr(){
    return array(1, 2);
}
$el = array_shift(get_arr());
Copier après la connexion

Pour comprendre ce comportement, nous devons nous plonger dans la gestion des références de PHP. Lorsqu'une référence est transmise à une fonction, toutes les modifications apportées à la variable référencée par ce paramètre sont reflétées dans la variable d'origine. Dans le premier extrait de code, $instance->find(...) renvoie un tableau, qui n'est pas une variable. Passer ce tableau par référence déclenche l'avertissement.

Comprendre l'exception

Cependant, cette exception peut être trompeuse. Dans le deuxième extrait de code, la fonction get_arr() renvoie un tableau, ce qui implique qu'une référence peut lui être transmise. Cependant, la fonction elle-même n'utilise pas de paramètre de référence, donc l'avertissement est évité.

Solutions pour éviter l'avertissement

Pour éliminer l'avertissement, il existe deux options :

  1. Modifier la signature de la méthode : Modifier la signature de la méthode qui prend un paramètre de référence pour ne plus l'utiliser it.
  2. Utiliser une variable intermédiaire : Créez une variable intermédiaire pour contenir la valeur de retour de la méthode qui n'utilise pas de paramètre de référence. Ensuite, passez la variable intermédiaire par référence.

Exemple :

function get_arr(){
    return array(1, 2);
}

$inter = get_arr();
$el = array_shift($inter);
Copier après la connexion

En utilisant la variable intermédiaire $inter, on évite de passer la valeur de retour de get_arr() directement par référence, résolvant l'avertissement de normes strictes.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal