Når du opretter en funktion og overføre parametre til den i PHP: Hypertext Preprocessor , skal du forstå omfanget af parametrene. PHP tvinger dig til specifikt erklære når at tillade en funktion til at ændre den globalt værdien af en parameter. I PHP version 5 , påvirker objekt model , hvordan objekter behandles , når passerede som parametre til funktioner . Mens modellen er i overensstemmelse med den overordnede PHP standarden , giver det en funktion, der giver dig mulighed for at manipulere de globale værdier objekt medlemmer uden specifikt at erklære dette i funktion definition. Parameter Scope
Når du passerer en variabel til en funktion i PHP og funktionen ændrer værdien af variablen , har det ingen effekt på den variable værdi uden for funktionen. Hvis du vil tillade en funktion til at ændre værdien af en variabel , skal du specifikt erklære denne hensigt ved at forudfastsætte variabelnavnet med et og-tegn i funktionen definition. For eksempel : Hej
funktion modify_param , (& param ) { }
Værdi eller reference
En funktion kan ikke ændre en variabels værdi uden sin egen rækkevidde , fordi PHP passerer variabel ved værdi. Det skaber en kopi af den variable værdi og passerer kopi til funktionen. Eventuelle ændringer til denne værdi påvirker kun den lokale kopi . Når du passerer ved henvisning vha. tegnet i funktionen definition , PHP passerer en pegepind til den hukommelse adresse rum, der indeholder værdien af den variable . Operationer på variablen udføres derefter mod den globale værdi af variablen , ikke en kopi af sin værdi.
Passing Objects
Når du passerer et objekt som en parameter til en funktion , der stadig PHP passerer objektet ved værdi, men det passerer en anden slags værdi. En kopi af et objekt håndtag eller en identifikationskode , der overføres til funktionen . Den objekt-id tillader funktionen for at finde lageradressen rum , hvor værdierne af objektet medlemmer er gemt. Det betyder, at et objekts medlemmer rent faktisk kommer som reference. Operationer , der bruger et objekts egenskaber og metoder manipulere hukommelsen adresse rum for de medlemmer og ændre deres globale værdier .
Objekthåndtering Copy
Ikke alle objekter i PHP er gået ved henvisning, ændringer til objektet medlemmer selvom påvirker globale værdier . En kopi af objektet håndtaget føres til en funktion . Hvis en funktion gør en opgave , der ændrer objektet håndtere selv, betyder , at forandring ikke ændre genstanden håndtere, da det er gået i værdi . Hvis du vil tillade en funktion til at ændre objektets håndtag , skal du bestå objektet ved reference, ligesom du ville gøre med enhver anden variabel i PHP.