Lorsque vous créez une fonction et passer des paramètres en PHP : Hypertext Preprocessor , vous devez comprendre la portée des paramètres. PHP oblige à déclarer spécifiquement lorsque pour permettre une fonction pour modifier la valeur globale d'un paramètre. Dans la version PHP 5, le modèle objet affecte la façon dont les objets sont traités lorsqu'ils sont passés en tant que paramètres aux fonctions . Alors que le modèle est conforme à la norme globale PHP , il dispose d'une fonction qui vous permet de manipuler les valeurs globales des membres de l'objet sans déclarer expressément ce dans la définition de la fonction. Paramètre Portée
Lorsque vous passez une variable à une fonction en PHP et la fonction modifie la valeur de la variable , il n'a aucun effet sur la valeur de la variable en dehors du champ d'application de la fonction. Pour permettre une fonction de modifier la valeur d'une variable , vous devez déclarer expressément cette intention en faisant précéder le nom de la variable avec une esperluette dans la définition de la fonction. Par exemple:
fonction modify_param
, ( & param) {}
valeur ou référence
Une fonction ne peut pas modifier la valeur d'une variable à l'extérieur son champ d'application , car la variable PHP passe par valeur. Il crée une copie de la valeur de la variable et passe la copie à la fonction. Toute modification de cette valeur ne concernent que la copie locale. Quand vous passez par référence en utilisant l'esperluette dans la définition de fonction , PHP passe un pointeur à l'espace d'adressage de la mémoire contenant la valeur de la variable. Les opérations sur la variable sont ensuite effectuées à la valeur globale de la variable, pas une copie de sa valeur.
Passer des objets
Lorsque vous passez un objet en tant que paramètre à une fonction, PHP passe encore l'objet de valeur, mais il passe un autre type de valeur . Un exemplaire d'un identificateur d'objets , ou d'un identifiant , est transmis à la fonction . L'identificateur d'objet permet de trouver la fonction de l'espace d'adresse de mémoire où les valeurs des éléments de l'objet sont mémorisées . Cela signifie que les membres d'un objet sont effectivement passés par référence. Les opérations qui utilisent les propriétés d'un objet et les méthodes de manipuler l'espace d'adressage de la mémoire de ces membres et de changer leurs valeurs globales .
Object Handle Copier
Pas tous les objets en PHP sont passés par référence , même si les modifications apportées aux membres de l'objet affecter les valeurs mondiales . Une copie de la poignée de l'objet est transmis à une fonction . Si une fonction fait une cession qui modifie l'objet gérer lui-même , ce changement ne modifie pas l'objet manier car il est passé par valeur . Pour permettre une fonction de modifier la poignée de l'objet, vous devez passer l' objet par référence , comme vous le feriez avec n'importe quelle autre variable en PHP.