Oletko haasteen edessä oppiaksesi olio-ohjelmoinnin perusteet PHP:ssä? Tämän aiheen keskiössä ovat erityiset viittaukset $this ja self. Nämä kaksi avainsanaa ovat ratkaisevia olioiden ja luokkien käsittelyssä PHP:ssä, koska ne hallitsevat kommunikointia ja pääsyä instanssimuuttujiin ja vakiomuuttujiin. Tutkitaan yhdessä näiden käsitteiden eroja ja käyttöä.
Tärkeimmät havainnot
- $this on viittaus nykyiseen olioon ja sitä käytetään instanssimetodeissa.
- self viittaa nykyiseen luokkaan ja sitä käytetään pääsyyn staattisiin ominaisuuksiin ja metodeihin sekä vakiomuuttujiin.
- Ero $this:n ja self:n välillä on perustavanlaatuinen ymmärtämiselle olio-ohjelmoinnissa PHP:ssä.
Ymmärtää viittaus $this
Aloitetaan avainsanasta $this. $this on erityinen muuttuja, joka viittaa nykyiseen olioon. Kun käytät $this:tä instanssimetodissa, voit käyttää kaikkia tämän erityisen olion instanssimuuttujia ja -metodeja.

Oletetaan, että sinulla on luokka Tietokanta, jonka instanssioit. Tämän luokan metodissa voit esimerkiksi käyttää instanssimuuttujia kuten User tai Pass. Tämä tapahtuu $this->User tai $this->Pass kautta. Nämä muuttujat ovat olemassa vain kyseisen olion kontekstissa, minkä vuoksi $this on ratkaiseva.
On tärkeää tietää, että $this on universaali viittaus, joka osoittaa aina nykyiseen olioon. Jos muita objekteja on olemassa, $this viittaa kontekstin mukaan siihen tiettyyn olioon, jossa koodi tällä hetkellä sijaitsee.
Avaimen self yksityiskohdissa
Sen sijaan avainsana self ei rajoitu instanssiin. Se viittaa luokkaan itseensä, mikä antaa sinun käyttää luokan staattisia ominaisuuksia ja vakioita. Tarkastellaan taas luokkaa Tietokanta. Oletetaan, että olet määrittänyt vakion tämän luokan sisällä. Voit päästä käsiksi tähän vakiota käyttämällä self::Vakiot.

Huomaa, että self on erityisen hyödyllinen staattisissa metodeissa ja ominaisuuksissa. Tällaiset muuttujat ovat olemassa vain kerran koko luokkaan liittyvissä instansseissa, eivätkä välttämättä jokaisessa erillisessä objektissa. Tämä on keskeinen ero instanssimuuttujiin verrattuna.
Tietenkin on myös tapauksia, joissa haluat käyttää staattisia metodeja tai vakioita luokan metodissa. Tällaisessa tapauksessa käytät self::Metodi(), varmistaaksesi, että pääsy tapahtuu luokan kautta eikä instanssin kautta.

Käytännön esimerkin tekeminen
Kuvittele, että haluat luoda luokan SIS. Tässä on yksinkertainen esimerkki näyttääksesi molempien viitteen käyttöä.

Tämän luokan sisällä voisimme määrittää staattisia ominaisuuksia ja metodeja. Sanotaan, että sinulla on metodi getName(), joka käyttää instanssimuuttujaa name. Jotta pääset tähän instanssimuuttujaan, käyttäisit $this->name.

Kuitenkin päästäksesi käsiksi vakioon KEY_PATH, joka on määritelty luokassa, käytät self::KEY_PATH. Tämä varmistaa, että et joudu instanssiriitaan päästessäsi vakiomuuttujiin.
Lopuksi näytät echo-komennolla, että viittaukset toimivat. Voit helposti tulostaa sekä instanssimuuttujat että vakiot, osoittaaksesi, että ne viitataan oikein.

Yhteenveto – $this:n ja self:n ymmärtäminen PHP:ssä
Tämän päivän kirjoituksessa olet oppinut $this:n ja self:n käytön perusteet ja erot olio-ohjelmoinnissa PHP:ssä. Kun taas $this viittaa erityisesti nykyiseen olioon, self tähtää luokkaan itseensä. Nämä käsitteet ovat keskeisiä tehokkaalle kehittämiselle PHP:ssä.
Usein kysytyt kysymykset
mikä on ero $this:n ja self:n välillä?$this viittaa nykyiseen olioon, kun taas self viittaa luokkaan itseensä.
Milloin minun pitäisi käyttää $this:ta?Käytä $this:ta, kun haluat käyttää instanssimuuttujia tai -metodeja.
Milloin self on hyödyllinen?self on hyödyllinen, kun haluat käyttää luokan staattisia ominaisuuksia tai vakioita.
Onko self:lle erityistä tapausta?Kyllä, self on hyödyllinen, jotta voit käyttää staattisia metodeja luokan jäsenille.
Kuinka varmistat, että pääset käsiksi instanssimuuttujiin oikein?Käytä $this->muuttujaNimi varmistaaksesi, että pääset käsiksi instanssikohtaisiin arvoihin.