Står du inför utmaningen att lära dig grunderna i objektorienterad programmering i PHP? I centrum för detta ämne står de specifika referenserna $this och self. Dessa två nyckelord är avgörande för hantering av objekt och klasser i PHP, eftersom de styr kommunikationen och åtkomsten till instansvariabler och konstanter. Låt oss tillsammans belysa skillnaderna och användningen av dessa koncept.
Viktigaste insikterna
- $this är en referens till det aktuella objektet och används i instansmetoder.
- self pekar på den aktuella klassen och används för att få tillgång till statiska egenskaper och metoder samt konstanter.
- Skillnaden mellan $this och self är grundläggande för förståelsen av objektorienterad programmering i PHP.
Förstå referensen $this
Låt oss börja med nyckelordet $this. $this är en speciell variabel som refererar till det aktuella objektet. När du inom en instansmetod får åtkomst till $this kan du nå alla instansvariabler och -metoder för detta specifika objekt.

Anta att du har en klass Databas som du instansierar. Inom en metod i denna klass kan du till exempel få åtkomst till instansvariabler som User eller Pass. Detta görs genom $this->User eller $this->Pass. Dessa variabler existerar endast i kontexten av det specifika objektet, vilket gör $this avgörande.
Det är viktigt att veta att $this är en universell referens som alltid pekar på det aktuella objektet. Om ytterligare objekt existerar kommer $this kontextuellt att referera till det aktuella objekt där koden just nu befinner sig.
Nyckeln self i detalj
Nyckelordet self å sin sida är inte begränsat till en instans. Det pekar på klassen själv, vilket tillåter dig att få åtkomst till statiska egenskaper och konstanter av klassen. Åter igen betraktar vi klassen Databas. Anta att du har definierat en konstant inom denna klass. Du kan få åtkomst till denna konstant genom att använda self::Konstant.

Observera att self framför allt är användbart för statiska metoder och egenskaper. Sådana variabler finns för hela klassinstansen en gång, inte för varje enskilt objekt. Detta är en central skillnad från instansvariabler.
Naturligtvis finns det också fall där du vill få åtkomst till statiska metoder eller konstanter inom en metod i klassen. I så fall använder du self::Metod(), för att säkerställa att åtkomsten sker via klassen och inte genom en instans.

Skapa ett praktiskt exempel
Tänk dig att du vill skapa en klass SIS. Här är ett enkelt exempel för att demonstrera användningen av båda referenserna.

Inom denna klass skulle vi kunna definiera statiska egenskaper och metoder. Säg att du har en metod getName() som använder en instansvariabel name. För att få åtkomst till denna instansvariabel skulle du använda $this->name.

För att få åtkomst till en konstant KEY_PATH som är definierad i klassen använder du self::KEY_PATH. Detta säkerställer att du inte hamnar i en instanskonflikt när du får åtkomst till konstanter.
Slutligen visar du med ett echo att referenserna fungerar. Du kan enkelt skriva ut både instansvariabler och konstanta värden för att demonstrera att de refereras korrekt.

Sammanfattning – Förstå $this och self i PHP
I dagens inlägg har du lärt dig grunderna i användning och skillnader mellan $this och self i objektorienterad programmering med PHP. Medan $this specifikt hänvisar till det aktuella objektet, syftar self på klassen själv. Dessa koncept är grundläggande för effektiv utveckling i PHP.
Vanliga frågor
Vad är skillnaden mellan $this och self?$this refererar till det aktuella objektet, medan self pekar på klassen själv.
När ska jag använda $this?Använd $this när du vill få åtkomst till instansvariabler eller -metoder.
När är self meningsfullt?self är meningsfullt när du vill få åtkomst till statiska egenskaper eller konstanter i klassen.
Finns det ett särskilt fall för self?Ja, self är användbart för att få åtkomst till klassmedlemmar inom statiska metoder.
Hur ser jag till att jag får åtkomst till instansvariabler korrekt?Använd $this->variablenNamn för att säkerställa att du får åtkomst till de instansspecifika värdena.