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.

Forståelse av $this og self i PHP for nybegynnere

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.

Forståelse av $this og self i PHP for nybegynnere

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.

Forståelse av $this og self i PHP for nybegynnere

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.

Forståelse av $this og self i PHP for nybegynnere

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.

Forståelse av $this og self i PHP for nybegynnere

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.

Forståelse av $this og self i PHP for nybegynnere

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.