Står du overfor utfordringen med å lære grunnleggende objektorientert programmering i PHP? I sentrum for dette temaet står de spesielle referansene $this og self. Disse to nøkkelordene er avgjørende for håndtering av objekter og klasser i PHP, siden de styrer kommunikasjon og tilgang til instansvariabler og konstanter. La oss sammen se nærmere på forskjellene og bruken av disse konseptene.
Viktigste funn
- $this er en referanse til det aktuelle objektet og brukes i instansmetoder.
- self refererer til den aktuelle klassen og brukes for å få tilgang til statiske egenskaper og metoder, samt konstanter.
- Forskjellen mellom $this og self er fundamental for å forstå objektorientert programmering i PHP.
Forstå referansen $this
La oss begynne med nøkkelordet $this. $this er en spesiell variabel som refererer til det aktuelle objektet. Når du får tilgang til $this innenfor en instansmetode, kan du få tilgang til alle instansvariabler og -metoder for dette spesifikke objektet.

Anta at du har en klasse Database, som du instansierer. Innenfor en metode i denne klassen kan du for eksempel få tilgang til instansvariabler som Bruker eller Passord. Dette gjøres via $this->Bruker eller $this->Passord. Disse variablene eksisterer kun i konteksten av det respektive objektet, derfor er $this avgjørende.
Det er viktig å vite at $this representerer en universell referanse som alltid peker til det aktuelle objektet. Hvis det finnes flere objekter, vil $this kontekstuelt referere til det respektive objektet koden befinner seg i.
Nøkkelen self i detalj
Nøkkelordet self derimot er ikke begrenset til en instans. Det refererer til klassen selv, noe som lar deg få tilgang til statiske egenskaper og konstanter i klassen. Igjen ser vi på klassen Database. Anta at du har definert en konstant innenfor denne klassen. Du kan få tilgang til denne konstanten ved å bruke self::Konstant.

Merk at self spesielt er nyttig for statiske metoder og egenskaper. Slike variabler finnes én gang for hele klasseinstansen, ikke for hvert enkelt objekt. Dette er en sentral forskjell fra instansvariabler.
Selvfølgelig finnes det også tilfellet hvor du ønsker å få tilgang til statiske metoder eller konstanter fra en metode i klassen. I et slikt tilfelle bruker du self::Metode(), for å sikre at tilgangen skjer gjennom klassen og ikke via en instans.

La oss lage et praktisk eksempel
Se for deg at du ønsker å lage en klasse SIS. Her er et enkelt eksempel som viser bruken av begge referanser.

Innenfor denne klassen kan vi definere statiske egenskaper og metoder. Si at du har en metode getName(), som bruker en instansvariabel navn. For å få tilgang til denne instansvariabelen, vil du bruke $this->navn.

For å få tilgang til en konstant KEY_PATH som er definert i klassen, bruker du self::KEY_PATH. Dette sikrer at du ved tilgang til konstanter ikke havner i en instanskonflikt.
Til slutt viser du med et echo at referansene fungerer. Du kan enkelt skrive ut både instansvariablene og de konstante verdiene for å demonstrere at de refereres riktig.

Sammenfatning – Forstå $this og self i PHP
I dagens innlegg har du lært det grunnleggende om bruken og forskjellene mellom $this og self i objektorientert programmering med PHP. Mens $this refererer spesifikt til det aktuelle objektet, retter self seg mot klassen selv. Disse konseptene er grunnleggende for effektiv utvikling i PHP.
Vanlige spørsmål
Hva er forskjellen mellom $this og self?$this refererer til det aktuelle objektet, mens self refererer til klassen selv.
Når bør jeg bruke $this?Bruk $this når du ønsker å få tilgang til instansvariabler eller -metoder.
Når er self nyttig?self er nyttig når du ønsker å få tilgang til statiske egenskaper eller konstanter i klassen.
Finnes det et spesielt tilfelle for self?Ja, self er nyttig for å få tilgang til klassemedlemmer innen statiske metoder.
Hvordan sikrer jeg at jeg får riktig tilgang til instansvariabler?Bruk $this->variabelNavn for å sikre at du får tilgang til instansspesifikke verdier.