Kas sa seisad silmitsi väljakutsega õppida objektorienteeritud programmeerimise aluseid PHP keeles? Selle teema keskmes on spetsiifilised viitavad $this ja self. Need kaks märksõna on määravad objektide ja klassidega töötamisel PHP-s, kuna need juhivad suhtlemist ja ligipääsu instantsi muutujatele ja konstantidele. Vaatame koos nende kontseptsioonide erinevusi ja rakendusi.

Olulisemad tähelepanekud

  • $this on viide praegusele objektile ja seda kasutatakse instantsi meetodites.
  • self viitab praegusele klassile ja seda kasutatakse staatiliste omaduste ja meetodite ning konstantide juurde pääsemiseks.
  • Erinevus $this ja self vahel on fundamentaalne, et mõista objektorienteeritud programmeerimist PHP-s.

Viidat $this mõistmine

Alustame märksõnast $this. $this on spetsiifiline muutuja, mis viitab praegusele objekti. Kui sa pääsed $this-le instantsi meetodis, saad sa ligipääsu kõigile selle konkreetse objekti instantsi muutujatele ja meetoditele.

$this ja self mõistmine PHP-s algajatele

Oletame, et sul on klass andmebaas, mille sa instantsi. Klassi selle meetodi sees saad sa näiteks ligipääsu instantsi muutujatele nagu kasutaja või parool. Seda teed läbi $this->kasutaja või $this->parool. Need muutujad eksisteerivad ainult vastava objekti kontekstis, mistõttu on $this määrav.

On oluline teada, et $this on universaalne viidatud, mis näitab alati praegusele objektile. Kui eksisteerivad veel objekte, viitab $this konteksti sõltuvalt sellele objekti, milles kood parasjagu asub.

Võti self detailides

Märksõna self ei ole aga piiratud instantsiga. See viitab klassile endale, mis võimaldab sul pääseda juurde klassi staatilistele omadustele ja konstantidele. Tartakord vaatame klassi andmebaas. Oletame, et oled defineerinud konstantse selle klassi sees. Sa saad sellele konstantile ligi, kasutades self::Konstant.

$this ja self mõistmine PHP-s algajatele

Pange tähele, et self on eriti kasulik staatiliste meetodite ja omaduste jaoks. Sellised muutujad on klassi instantsi jaoks olemas ühekordselt, mitte iga objekti jaoks eraldi. See on peamine erinevus instantsi muutujate ja staatiliste omaduste vahel.

Muidugi võib esineda olukordi, kus soovid klassi meetodis pääseda juurde staatilistele meetoditele või konstantidele. Sellisel juhul kasutad self::Meetod(), et tagada, et juurdepääs toimub klassi kaudu, mitte instantsi kaudu.

$this ja self mõistmine PHP algajatele

Praktiline näide

Kujuta ette, et soovid luua klassi SIS. Siin on lihtne näide, et demonstreerida mõlema viitamise kasutamist.

$this ja self mõistmine PHP-s algajatele

Klassis võiksime määratleda staatilisi omadusi ja meetodeid. Ütle, et sul on meetod getName(), mis kasutab instantsi muutujat name. Selle instantsi muutujale juurdepääsuks kasutaksid sa $this->name.

$this ja selfi mõistmine PHP-s algajatele

Kuid järgneva konstantile KEY_PATH, mis on määratletud klassis, pääsed sa ligi kasutades self::KEY_PATH. See tagab, et konstantide juurde pääsul ei esine instantsi konflikte.

Lõpuks näitad sa echo kaudu, et viidatud töötavad. Sa saad probleemideta välja anda nii instantsi muutujad kui ka konstantsed väärtused, et demonstreerida, et nad on õigesti viidatud.

$teeme arusaamist $this ja self PHP jaoks algajatele

Kokkuvõte - $this ja self mõistmine PHP-s

Tänases postituses oled sa õppinud objekti- ja klassipõhise programmeerimise aluseid $this ja self kasutamisest ja erinevustest PHP-s. Kui $this viitab spetsiaalselt praegusele objektile, siis self suunab klassile endale. Need kontseptsioonid on fundamentaalsed tõhusaks arendamiseks PHP-s.

Korduma kippuvad küsimused

Mis vahe on $this ja self vahel?$this viitab praegusele objektile, samas kui self viitab klassile endale.

Millal peaksin kasutama $this?Kasutage $this, kui soovite pääseda juurde instantsi muutujatele või meetoditele.

Millal on self mõistlik kasutada?self on mõistlik, kui soovite pääseda juurde klassi staatilistele omadustele või konstantidele.

Kuidas on self'i puhul eriline olukord?Jah, self on kasulik, et pääseda staatiliste meetodite kaudu klassi liikmele.

Kuidas saan olla kindel, et pääsen õigesti instantsi muutujatele ligi?Kasutage $this->muutujaNimi, et olla kindel, et pääsete instantsi spetsiifilistele väärtustele ligi.