Ar tu pasiruošęs iššūkiui išmokti objektais paremtos programavimo kalbos pagrindus PHP? Šios temos centre yra specialios nuorodos $this ir self. Šie du raktiniai žodžiai yra labai svarbūs dirbant su objektais ir klasėmis PHP, nes jie valdo komunikaciją ir prieigą prie instancijos kintamųjų ir konstantų. Pažvelkime į šių koncepcijų skirtumus ir taikymą kartu.

Pagrindinės įžvalgos

  • $this yra nuoroda į dabartinį objektą ir naudojama instancijos metoduose.
  • self nurodo dabartinę klasę ir naudojama norint pasiekti statines savybes ir metodus, taip pat konstantas.
  • Skirtumas tarp $this ir self yra esminis norint suprasti objektais paremtą programavimą PHP.

Suprasti nuorodą $this

Pradėkime nuo raktinio žodžio $this. $this yra speciali kintamoji, kuri nurodo dabartinį objektą. Kai prie $this kreipiatės instancijos metode, galite pasiekti visus šio konkretaus objekto instancijos kintamuosius ir metodus.

$this ir self supratimas PHP pradedantiesiems

Įsivaizduokite, kad turite klasę Duomenų Bazė, kurią instancijuojate. Klasės metodo viduje galėtumėte, pavyzdžiui, pasiekti instancijos kintamuosius, tokius kaip Vartotojas arba Slaptažodis. Tai vyksta per $this->Vartotojas arba $this->Slaptažodis. Šie kintamieji egzistuoja tik to konkretaus objekto kontekste, todėl $this yra lemtingas.

Svarbu žinoti, kad $this yra universali nuoroda, kuri visada nurodo dabartinį objektą. Jei egzistuoja papildomi objektai, $this kontekstualiai nurodys tam tikrą objektą, kuriame yra kodas.

Raktinis žodis self išsamiai

Raktinis žodis self, kita vertus, nėra apribotas instancijai. Jis nurodo pačią klasę, leidžiančią pasiekti klasės statines savybes ir konstantas. Vėlgi, pažvelkime į klasę Duomenų Bazė. Įsivaizduokite, kad šioje klasėje apibrėžėte konstantą. Galite pasiekti šią konstantą naudodami self::Konstanta.

Šiandienos pamoka: Pradžiamoksliams apie $this ir self PHP

Atkreipkite dėmesį, kad self ypač naudinga statiniams metodams ir savybėms. Tokie kintamieji egzistuoja visai klasės instancijai, o ne kiekvienam atskiram objektui. Tai esminis skirtumas nuo instancijos kintamųjų.

Žinoma, yra atvejų, kai klasės metode norite pasiekti statinius metodus ar konstantas. Tokiu atveju naudojate self::Metodas(), kad užtikrintumėte, jog prieiga vykdoma per klasę, o ne per instanciją.

$this ir self supratimas PHP programuotojams pradedantiesiems

Praktinis pavyzdys

Įsivaizduokite, kad norite sukurti klasę SIS. Čia yra paprastas pavyzdys, norint parodyti abiejų nuorodų naudojimą.

$this ir self PHP supratimas pradedantiesiems

Šioje klasėje galėtume apibrėžti statines savybes ir metodus. Sakykite, kad turite metodą getName(), kuris naudoja instancijos kintamąjį name. Norėdami pasiekti šį instancijos kintamąjį, naudotumėte $this->name.

$this ir self PHP pradedantiesiems

Tačiau norint pasiekti KEY_PATH konstantą, kuri yra apibrėžta klasėje, naudojate self::KEY_PATH. Tai užtikrina, kad prieiga prie konstantų nekelia instancijos konfliktų.

Galiausiai, galite su echo parodyti, kad nuorodos veikia. Galite be vargo išvesti tiek instancijos kintamuosius, tiek nuolatinius reikšmes, kad parodytumėte, jog jie teisingai nurodyti.

$This ir self supratimas PHP pradedantiesiems

Santrauka – Supratimas apie $this ir self PHP

Šiandieniniame įraše sužinojote apie $this ir self naudojimo pagrindus bei jų skirtumus objektais paremtame programavime su PHP. Kol $this konkrečiai nurodo dabartinį objektą, self orientuojasi į pačią klasę. Šios koncepcijos yra pagrindinės efektyviam PHP vystymuisi.

Dažniausiai užduodami klausimai

Koks skirtumas tarp $this ir self?$this nurodo dabartinį objektą, o self nurodo pačią klasę.

Kada turėčiau naudoti $this?Naudokite $this, kai norite pasiekti instancijos kintamuosius ar metodus.

Kada naudinga self?self yra naudinga, kai norite pasiekti klasės statines savybes ar konstantas.

Ar yra ypatingas atvejis self?Taip, self yra naudinga pasiekti klasės narius statiniuose metoduose.

Kaip įsitikinti, kad teisingai prieinu prie instancijos kintamųjų?Naudokite $this->kintamojoPavadinimas, kad užtikrintumėte, jog prieinate prie instancijai specifinių reikšmių.