Mai mult
Sunt PHP Variabile transmise prin valoare sau prin referință?
Sunt PHP variabile transmise prin valoare sau prin referință?
225
13
Sunt PHP variabile transmise prin valoare sau prin referință?
L's de valoare conform Documentatia PHP.
Se pare că o mulțime de oameni a obține confuz de modul în care obiectele sunt trecute la funcțiile și ce trece de referință înseamnă. Obiect variabile sunt încă transmise prin valoare, doar valoarea care este trecut în PHP5 este o referință mâner. Ca dovada:
Ieșiri:
A a trece de referință înseamnă că putem modifica variabilele care sunt văzute de către apelant. Care în mod clar codul de mai sus nu face. Avem nevoie pentru a schimba funcția de swap pentru a:
Ieșiri:
în scopul de a trece de referință.
În PHP, implicit, obiectele sunt trecut ca referință copia un Obiect nou.
Vezi acest exemplu.............
Acum vezi asta..............
Acum vezi asta ..............
sper că puteți înțelege asta.
http://www.php.net/manual/en/migration5.oop.php
PHP variabilele sunt alocate prin valoare, a trecut la funcțiile de valoare, și atunci când conțin/reprezentând obiectele sunt transmise prin referință. Puteți forța de variabile pentru a trece de referință folosind o &
Atribuit de valoare/de referință, de exemplu:
ar ieșire
A trecut de valoare/de referință exampe:
ar ieșire:
Obiect variabile transmise prin referință exampe:
Ar ieșire:
(ultimul exemplu ar putea fi mai bine, probabil...)
Puteți trece o variabilă a unei funcții prin referință. Această funcție va fi capabil de a modifica variabila originală.
Puteți defini trecerea de referință în funcție de definiție:
O poti face oricum.
pune o '&' simbol în față și variabila ce trece devine unul și același lucru ca și originea sa. de exemplu: puteți trece de referință, mai degrabă decât a face o copie.
deci
Variabilele care conțin tipuri primitive sunt transmise prin valoare în PHP5. Variabilele conțin obiectele sunt transmise prin referință. Nu's destul de un interesant articol din Linux Journal din 2006, care menționează acest lucru și alte OO diferențe între 4 și 5.
http://www.linuxjournal.com/article/9170
Obiectele sunt transmise prin referință în PHP 5 și de valoare în PHP 4. Variabilele sunt transmise prin valoare, în mod implicit!
Citeste aici: http://www.webeks.net/programming/php/ampersand-operator-used-for-assigning-reference.html
Atributele sunt încă modificabile, când nu a trecut de referință, deci atentie.
Ieșire:
SwapObjects: b, o SwapValues: a, b
Utilizați această pentru funcțiile atunci când doriți să pur și simplu modifica variabila originală și să se întoarcă din nou la același nume de variabilă cu noua sa valoare atribuită.
De fapt, ambele metode sunt valabile, dar aceasta depinde de cerințele dumneavoastră.Trece valorile de referință de multe ori face script-ul lent. Deci, este mai bine pentru a trece variabile de valoare de având în vedere timpul de execuție. De asemenea, fluxul de cod este mai consistent atunci când treci variabile de valoare.
Depinde de versiune, 4 este de valoare, 5 este de referință.