Tu esi saskāries ar izaicinājumu apgūt objektorientētās programmēšanas pamatus PHP? Šīs tēmas centrā ir īpašās atsauces $this un self. Šie divi atslēgvārdi ir izšķiroši objektiem un klasēm PHP, jo tie nosaka komunikāciju un piekļuvi instanču mainīgajiem un konstantēm. Apskatīsim kopā šo konceptu atšķirības un pielietojumu.
Galvenās atziņas
- $this ir atsauce uz pašreizējo objektu un tiek izmantota instanču metodēs.
- self norāda uz pašreizējo klasi un tiek izmantota, lai piekļūtu statiskajām īpašībām un metodēm, kā arī konstantēm.
- Atšķirība starp $this un self ir fundamentāla, lai saprastu objektorientēto programmēšanu PHP.
Izprast atsauci $this
Sāksim ar atslēgvārdu $this. $this ir īpaša mainīgā, kas attiecas uz pašreizējo objektu. Kad tu piekļūsti $this iekš instanču metodē, tu vari piekļūt visām šī konkrētā objekta instanču mainīgajiem un metodēm.

Iedomājies, ka tev ir klase Datubāze, kuru tu instancē. Klasē iekš kādas metodes tu vari piekļūt tādām instanču mainīgajiem kā Lietotājs vai Parole. Tas notiek caur $this->Lietotājs vai $this->Parole. Šie mainīgie eksistē tikai konkrētā objekta kontekstā, tāpēc $this ir izšķirošs.
Ir svarīgi zināt, ka $this ir vispārēja atsauce, kas vienmēr norāda uz pašreizējo objektu. Ja pastāv citas instancētas, $this konteksta ziņā atsauksies uz to objektu, kurā kods šobrīd atrodas.
Atslēga self detaļās
Atslēgvārds self savukārt nav ierobežots uz instanci. Tas norāda uz pašu klasi, ļaujot piekļūt klases statiskajām īpašībām un konstantēm. Atkal aplūkosim klasi Datubāze. Iedomājies, ka tu esi definējis konstantu šajā klasē. Tu vari piekļūt šai konstantei, izmantojot self::Konstante.

Pievērs uzmanību, ka self ir īpaši noderīgs statiskajām metodēm un īpašībām. Tādi mainīgie ir pieejami visai klases instancei vienreiz, nevis katram atsevišķam objektam. Tas ir centrāls atšķirības punkts salīdzinājumā ar instanču mainīgajiem.
Protams, pastāv arī gadījums, ka tu vēlies piekļūt statiskajām metodēm vai konstantēm klases metodē. Šādā gadījumā tu izmanto self::Metode(), lai nodrošinātu piekļuvi caur klasi un nevis caur instanci.

Praktisks piemērs
Iedomājies, ka vēlies izveidot klasi SIS. Šeit ir vienkāršs piemērs, lai demonstrētu abu atsauču izmantošanu.

Šajā klasē mēs varētu definēt statiskās īpašības un metodes. Pieņem, ka tev ir metode getName(), kas izmanto instanču mainīgo name. Lai piekļūtu šim instanču mainīgajam, tu izmantotu $this->name.

Tomēr, lai piekļūtu konstantei KEY_PATH, kas ir definēta klasē, tu izmantosi self::KEY_PATH. Tas nodrošina, ka piekļūstot konstantēm, tu nepiedzīvosi instanču konfliktu.
Visbeidzot, tu ar echo parādi, ka atsauces darbojas. Tu vari bez problēmām izvadīt gan instanču mainīgos, gan konstantu vērtības, lai demonstrētu, ka tās tiek pareizi atsauktas.

Kopsavilkums – Sapratne par $this un self PHP
Šodienas ierakstā tu esi iepazinies ar objektorientētās programmēšanas pamatiem, izmantojot un atšķirot $this un self PHP. Kamēr $this īpaši attiecas uz pašreizējo objektu, self ir vērsta uz pašu klasi. Šie koncepti ir pamatīgi efektīvai attīstībai PHP.
Bieži uzdotie jautājumi
Kas ir atšķirība starp $this un self?$this attiecas uz pašreizējo objektu, kamēr self norāda uz pašu klasi.
Kad man vajadzētu izmantot $this?Izmanto $this, ja vēlies piekļūt instanču mainīgajiem vai metodēm.
Kad self ir jēgpilns?self ir jēgpilns, kad vēlies piekļūt klases statiskajām īpašībām vai konstantēm.
Vai ir kāds īpašs gadījums self?Jā, self ir noderīgs, lai piekļūtu klases locekļiem statiskajās metodēs.
Kā es varu pārliecināties, ka pareizi piekļušu instanču mainīgajiem?Izmanto $this->mainīgāNosaukums, lai pārliecinātos, ka piekļūsti instancē specifiskiem vērtībām.