Mokydamiesi interpretuojamos kalbos PHP, pradedantieji interneto programuotojai susiduria su tokia sąvoka kaip pseudo kintamasis $ this. Jo tikslas ir naudojimo taisyklės kode labai skiriasi nuo visų kitų kintamųjų, todėl verta išsamiai apsvarstyti šį klausimą.
Klasės ir daiktai
Objektinis programavimas (OOP), kuris PHP naudojamas nuo 5 versijos, suteikia programuotojui galimybę sukurti bet kokį tos pačios klasės egzempliorių skaičių, vadinamus objektais; šiuo atveju kiekviena sukurta kopija gauna savo vardą. Objektas gali paimti duomenis, vadinamus argumentais, apdoroti juos funkcijomis ir grąžinti rezultatą. Bet kuri klasės funkcija prie savo ypatybių gali naudotis ne tiesiogiai, o tik naudodama objektą-> nuosavybės konstrukciją, todėl kyla klausimas: kaip parašyti tokį universalų kodą, kuris leis bet kuriam sugeneruotam objektui dirbti su duomenimis, neatsižvelgiant į jo pavadinimą? Apsvarstykite pavyzdį, parodytą 1 paveiksle.
Šis kodas deklaruoja klasę, turinčią kintamąjį (ypatybę) ir dvi funkcijas (metodus), iš kurių viena yra konstruktorius, t.y. automatiškai prasideda, kai sukuriamas naujas objektas. Konstruktoriaus funkcijos užduotis yra priskirti duomenis savybei, kurią gauna argumentas, kai objektas yra sukurtas. Metodas, kai iškviečiamas, grąžina nuosavybės vertę.
Toliau apsvarstykite 12 ir 13 eilutes. Jose sukuriami du nauji klasės egzemplioriai, iš kurių vienas gauna skaičių 5 kaip argumentą, o kitas - 7. Šias reikšmes konstruktoriaus funkcija priskiria kintamajam (nuosavybė), prieinama tik tam tikrai klasei. Kiekvienas sukurtas objektas priskiriamas kintamiesiems ir atitinkamai (tiksliau, šie kintamieji gauna tik nuorodas į nurodytus objektus, tačiau tai šiuo metu nėra svarbu). Dabar galite gauti nuosavybės vertes naudodami paprastą metodo iškvietimą (15 ir 16 eilutės).
Priskyrus šį pseudo kintamąjį $
Atkreipkite dėmesį: mes turime du skirtingus objektus, taikydami tiksliai tuos pačius metodus.
Čia gelbsti pseudovariable. Jo pavadinimą iš anglų kalbos galima išversti kaip „tai“, t.y. nurodo (yra nuoroda) į objektą, kuriame jis yra. Dėl to 5 eilutė for gali būti suprantama kaip „priskirti objekto savybei argumento vertę“, 8 eilutė - „grąžinti objekto ypatybės vertę“. Kintamasis automatiškai įgis reikiamą vertę.