Ce este o referință în PHP?
Link-uri Alocarea în PHP
Aici am creat o variabilă cu o valoare de $ myvar „Bună ziua!“. Apoi am atribuit valoarea unei alte variabile $ anotherVar. Această copie a valorii prima variabilă în al doilea. Apoi vom schimba valoarea stocată în $ anotherVar la „Ne vedem mai târziu.“
Deoarece cele două variabile sunt independent, myVar $ încă mai păstrează valoarea sa inițială ( „Bună ziua!“), Care va conduce pe pagina. Până în prezent, totul merge bine. Acum, să schimbe exemplu pentru a seta valoarea $ variabilă a myVar $ anotherVar. folosind link-ul. mai degrabă decât valoarea. Pentru a face acest lucru, pur și simplu a scrie un ampersand ( „“) după semnul egal:
Acum puteți vedea că myvar dolari, de asemenea, a fost schimbat la „Ne vedem mai târziu!“ De ce sa întâmplat asta? Mai degrabă decât să atribuie valoarea variabilei myVar $ $ anotherVar - care pur și simplu crea două exemplare independente de aceeași valoare - am făcut $ anotherVarssylkoy un $ myVar valoare. Cu alte cuvinte, $ myVar și $ anotherVar atât punct la aceeași valoare. Astfel, atunci când am atribuit o nouă valoare, $ anotherVar valoarea myVar $, de asemenea, sa schimbat.
Rețineți că am putea schimba valoarea myvar pe $ „Ne vedem mai târziu“ în loc de variabila $ anotherVar, iar rezultatul ar fi exact la fel. Două variabile sunt, în esență, identice.
referințe Eliminarea în PHP
Puteți elimina link-ul folosind funcția PHP unset () în timp ce ștergeți o variabilă normală. Când ștergeți un link, pur și simplu eliminați link-ul în sine, mai degrabă decât valoarea de referință:
Valoarea rămâne în memorie până când eliminați toate referirile la acesta, inclusiv variabila originală:
Trecerea variabile în funcția de link-
Link-uri nu funcționează dacă le treci ca argumente pentru funcții. De obicei, atunci când treci o variabilă la o funcție,
Funcția primește o copie a valorii acestei variabile. Trecerea unei funcții de referință variabilă se poate referi la această variabilă,
dar, mai important, pentru a schimba variabila originală.
Pentru a trece un argument prin referință, setați ampersand înainte de numele parametrului funcției:
Acum, de fiecare dată când suni myFunc () și transmisie variabilă PHP transferă referința variabilă, mai degrabă decât valoarea variabilei. Luați în considerare un exemplu simplu de trecere prin referință:
la revedere ($ myVar); echo $ myVar; // Ieșirile „Ne vedem mai târziu“
Am verifica prin crearea unui $ myVar variabilă. cu o valoare inițială de „Bună ziua!“, de asteptare funcția de revedere () cu un parametru $ myVar. a trecut prin referință. la revedere funcție (schimba valoarea stocată în $ la myvar „Ne vedem mai târziu.“
Astfel, o legătură de transmisie ori de câte ori doriți să modificați o variabilă care este trecut ca un argument pentru funcția. Pur și simplu nu este adevărat. Apropo, nu fi tentat să scrie un ampersand înainte de argumentul în apelul funcției:
Înregistrarea semnul ampersand înainte de parametrul în definiția funcției este suficientă pentru a trece o variabilă de referință. Multe caracteristici construit în PHP folosind argumente care traverseazã de referință. De exemplu, sort () funcția ia o referință pentru a sorta matrice, astfel încât această funcție poate schimba ordinea elementelor din matrice.
Întoarcere link-ul din funcțiile
Dacă se poate trece variabile prin referire la o funcție, atunci același lucru poate fi întors dintr-o referințe funcționale. Pentru a face acest lucru, scrie ampersand înainte de numele funcției în definiția sa. Ar trebui, de asemenea, scrie ampersand (=) semnul când atribuirea unei funcții variabile, în caz contrar alocați pur și simplu o valoare, nu o referință.
În acest exemplu, funcția getNumWidgets () găsește $ numWidgets variabile globale și returnează o referință la acesta. Apoi, noi numim getNumWidgets (). care păstrează legături returnate în $ numWidgetsRef, și scade valoarea din variabila indicat de $ numWidgetsRef. Aceasta este aceeași valoare indicat de $ numWidgets variabile, după cum se poate observa din rezultatul funcției ecou.
Nu puteți utiliza de multe ori a reveni la link-ul ca link-ul de transmisie, dar această metodă poate fi utilă în anumite situații, cum ar fi atunci când doriți să creați funcția de căutare (sau metoda de clasă), care este variabilă (sau proprietatea unei clase) și se întoarce o trimitere la o variabilă sau o proprietate, astfel încât apelantul poate controla variabila sau proprietatea.
Modificarea valorilor în foreach teză de referință în PHP
Un alt exemplu util de a folosi link-uri pentru a modifica valorile din matrice cu o buclă foreach. Cu tsiklaforeach convenționale lucrezi valori matrice Skopje, așa că, dacă modificați valoarea sa nu va afecta matrice originală. De exemplu, încercați benzile de nume majuscule în matrice prin bucla foreach:
Se va vedea următoarele:
După cum puteți vedea, matricea originală nu este modificat ca urmare a unei bucle foreach. Cu toate acestea, dacă am pus un ampersand înainte de trupa din operatorul $ foreach $ banda devine o referință la elementul de matrice originală, mai degrabă decât o copie. Apoi, putem converti elementele matrice în litere mari:
Codul nostru funcționează acum cum era de așteptat, după cum urmează:
O altă modalitate de a schimba valorile matrice în ciclul este de a utiliza pentru ciclul de schimb foreach.
Atunci când referințele sunt folosite în mod automat
Deci, ai învățat patru moduri de a crea un link direct:
- Atribuirea link-uri
- Trecerea de referință
- link-ul de returnare
- Creați un link într-o buclă foreach
În plus, există cazuri când PHP creează în mod automat link-uri. În cele mai multe cazuri, nu va trebui să, dar să fie conștienți de această posibilitate va fi util!
Referințele în PHP folosind cuvântul cheie la nivel mondial
Când utilizați cuvântul cheie la nivel mondial in interiorul functiei pentru a avea acces la o variabilă globală, atunci, de fapt, creați o legătură într-o matrice variabilă la nivel mondial $ GLOBALS.
Nu este la fel ca și exemplul următor:
Referințe în PHP, atunci când se utilizează cuvântul cheie $ this
Când scrierea de cod orientat pe obiect este adesea folosit $ cuvinte cheie acest lucru. Dacă utilizați $ această metodă într-un obiect, urmați instrucțiunile de pe obiectul curent. Este demn de amintit faptul că acest lucru este întotdeauna $ referință la obiect, mai degrabă decât o copie.
La transferarea obiectelor
Spre deosebire de alte tipuri de variabile, ori de câte ori atribuiți, treci sau returnează obiectul pe care returneaza o referinta la obiect, mai degrabă decât o copie. De obicei, transferul funcția sau metoda pe care lucrați cu obiectul în sine, nu copia acestuia.
În unele situații, atunci când într-adevăr doriți să faceți o copie a unui obiect, puteți utiliza cuvântul cheie
clona. De fapt, totul este mult mai subțire. Când creați un obiect variabilă, acesta conține un pointer la un obiect în memorie, mai degrabă decât obiectul în sine. Când atribuiți sau să transferați variabila pe care de fapt crearea unei copii a variabilei. Dar o copie este, de asemenea, un pointer la obiectul - ambele copii ale punctului încă la același obiect. Astfel, în cele mai multe cazuri, creați link-uri.
Acest blog este citit de mai multe persoane
- citește și tu!