PHP Referanser Vs. objekt~~POS=TRUNC Håndtak

Når du oppretter en funksjon og sende parametre til det i PHP: Hypertext Preprocessor, må du forstå omfanget av parametrene. PHP tvinger man å spesifikt erklære når man skal tillate en funksjon for å modifisere den globale verdien av en parameter. I PHP versjon 5, påvirker objektmodellen hvordan objekter blir behandlet når sendes som parametere til funksjoner. Mens modellen er i samsvar med den generelle PHP standard, gir det en funksjon som lar deg manipulere de globale verdiene av objektmedlemmer uten spesifikt å erklære dette i funksjonsdefinisjonen.

parameter Scope

Når man passerer en variabel til en funksjon i PHP og funksjonen modifiserer verdien av variabelen, har det ingen virkning på den variable verdi utenfor omfanget av funksjonen. Å tillate en funksjon for å endre verdien av en variabel, må du spesifikt erklære denne intensjonen med prefikset variabelnavnet med en ampersand i funksjonsdefinisjonen. For eksempel:

funksjon modify_param, (og 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 den variable verdi og sender kopi til funksjonen. Eventuelle endringer i denne verdien påvirker bare den lokale kopien. Når du passerer henvisning bruke tegnet i funksjonsdefinisjonen, passerer PHP en peker til minneadresserommet som inneholder verdien av variabelen. Operasjoner på den variable blir deretter utført mot den globale verdien av variabelen, ikke en kopi av sin verdi.

passerer objekter

Når du passerer et objekt som 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 minneadresserommet hvor verdiene av objektmedlemmer er lagret. Dette betyr at et objekt medlemmer er faktisk gått som referanse. Operasjoner som bruker egenskapene til et objekt og metoder manipulere minneadresseområdet av de medlemmer og endre sine globale verdier.

Object Håndtak Copy

Ikke alle objekter i PHP er vedtatt av referanse, selv om endringer i objektmedlemmer påvirke globale verdier. En kopi av objektet håndtaket føres til en funksjon. Hvis en funksjon som gjør en oppgave som endrer objektet håndtere selv, betyr at endringen ikke endre objektet håndtaket 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 en hvilken som helst annen variabel i PHP.