Când învață limbajul interpretat PHP, programatorii web începători întâlnesc un astfel de concept ca pseudo-variabila $ this. Scopul său și regulile de utilizare din cod sunt foarte diferite de toate celelalte variabile, așa că merită să ne oprim în detaliu asupra acestei probleme.
Clase și obiecte
Programarea orientată pe obiecte (OOP), care a fost utilizată în PHP de la versiunea 5, oferă programatorului posibilitatea de a crea orice număr de instanțe din aceeași clasă, numite obiecte; în acest caz, fiecare copie creată își primește propriul nume. Un obiect poate prelua date numite argumente, le poate procesa cu funcții și poate returna un rezultat. Orice funcție a unei clase își poate accesa proprietățile nu direct, ci numai prin construcția obiect-> proprietate, așa că se pune întrebarea: cum să scriem un astfel de cod universal care să permită oricărui obiect generat să lucreze cu date, indiferent de numele acestuia? Luați în considerare exemplul prezentat în Figura 1.
Acest cod declară o clasă care are o variabilă (proprietate) și două funcții (metode), dintre care una este un constructor, adică pornește automat când este creat un nou obiect. Sarcina funcției constructor este de a atribui datele proprietății primite de argument atunci când obiectul este creat. Metoda, atunci când este apelată, returnează valoarea proprietății.
Apoi, luați în considerare liniile 12 și 13. În ele, sunt create două noi instanțe ale clasei, dintre care una primește numărul 5 ca argument, iar cealaltă - 7. Aceste valori sunt atribuite de funcția constructor unei variabile (proprietate) care este accesibilă numai în cadrul clasei. Fiecare obiect creat este atribuit variabilelor și în consecință (mai exact, aceste variabile primesc doar referințe la obiectele specificate, dar acest lucru nu contează în acest moment). Acum puteți obține valorile proprietății cu o metodă simplă de apel (liniile 15 și 16).
Atribuind $ această pseudo-variabilă
Vă rugăm să rețineți: avem două obiecte diferite cu exact aceleași metode.
Și aici pseudovariabilul vine în ajutor. Numele său poate fi tradus din engleză prin „this”, adică indică (este o legătură) către obiectul în care se află. Ca urmare, linia 5 pentru poate fi citită ca „atribuiți valoarea unui argument unei proprietăți obiect”, linia 8 - „returnează valoarea unei proprietăți obiect”. Deoarece variabila va prelua automat valoarea corespunzătoare.