Når du oppretter en funksjon og sende parametre til den i PHP: Hypertext Preprocessor , må du forstå omfanget av parametrene . PHP tvinger deg til å spesifikt erklære når man skal tillate en funksjon for å endre den globale verdien av en parameter. I PHP versjon 5 , påvirker objekt-modellen hvordan objekter blir behandlet når sendes som parametere til funksjoner. Mens modellen i samsvar med den generelle PHP standard, gir det en funksjon som lar deg manipulere de globale verdier av objektmedlemmer uten spesifikt erklære dette i funksjonen definisjonen . Parameter Scope
Når du passerer en variabel til en funksjon i PHP og funksjonen endrer verdien av variabelen , har det ingen effekt på variabelens verdi utenfor omfanget av funksjonen . Å tillate en funksjon for å endre verdien av en variabel , må du spesifikt erklære denne hensikt med prefikset variabelnavnet med en ampersand i funksjonen definisjonen . For eksempel : en
funksjon modify_param , (& param ) { }
verdi eller Reference
En funksjon kan ikke endre verdien til en variabel utenfor sin egen omfang fordi PHP passerer variabel ved verdi. Det skaper en kopi av variabelens verdi og sender kopi til funksjonen. Eventuelle endringer i denne verdien påvirker bare den lokale kopien . Når du passerer ved henvisning hjelp av tegnet i funksjonen definisjonen , passerer PHP en peker til minneadresseplassen inneholder verdien av variabelen . Operasjoner på variabelen blir så utført mot den globale verdien av variabelen , ikke en kopi av sin verdi.
Passing objekter
Når du passerer et objekt som en parameter til en funksjon , passerer PHP fortsatt objektet i verdi , men det går en annen type verdi. En kopi av et objekt håndtak eller en identifikator sendes til funksjonen. Objektidentifikatoren tillater funksjon for å finne den minneadresseplassen hvor verdiene av objektmedlemmer er lagret. Dette betyr at et objekt medlemmer er faktisk gått som referanse. Virksomheter som bruker et objekts egenskaper og metoder manipulere minneadresseplassen av de medlemmer og endre sine globale verdier .
Object Håndtak Kopier
Ikke alle objekter i PHP er gått ved referanse , selv om endringer i objektmedlemmer påvirke globale verdier . En kopi av objektet håndtaket føres til et funksjon . Hvis en funksjon som gjør en oppgave som endrer objektet håndtere selv , betyr at endringen ikke vil endre objektets håndtere siden det er vedtatt av verdi. Å tillate en funksjon for å endre objektets håndtak , må du bestå objektet ved henvisning , akkurat som du ville gjort med hvilken som helst annen variabel i PHP.