När de lär sig det tolkade språket PHP, kommer nybörjade webbprogrammerare att stöta på ett sådant koncept som pseudovariabeln $ this. Dess syfte och användningsregler i koden skiljer sig väldigt mycket från alla andra variabler, så det är värt att fundera på denna fråga i detalj.
Klasser och föremål
Objektorienterad programmering (OOP), som har använts i PHP sedan version 5, ger programmeraren möjlighet att skapa valfritt antal instanser av samma klass, kallade objekt; i det här fallet får varje skapad kopia sitt eget namn. Ett objekt kan ta data som kallas argument, bearbeta det med funktioner och returnera ett resultat. Vilken funktion som helst i en klass kan komma åt dess egenskaper inte direkt, utan endast genom objekt-> fastighetskonstruktionen, så frågan uppstår: hur man skriver en sådan universell kod som gör att alla genererade objekt kan arbeta med data, oavsett dess namn? Tänk på exemplet som visas i figur 1.
Den här koden förklarar en klass som har en variabel (egenskap) och två funktioner (metoder), varav en är en konstruktör, dvs. startar automatiskt när ett nytt objekt skapas. Jobbet för konstruktorfunktionen är att tilldela data till egenskapen som mottas av argumentet när objektet skapas. Metoden returnerar egenskapens värde när den anropas.
Tänk sedan på raderna 12 och 13. I dem skapas två nya instanser av klassen, varav den ena får siffran 5 som ett argument, och den andra - 7. Dessa värden tilldelas av konstruktorfunktionen till en variabel (egendom) som endast är tillgänglig inom klassen. Varje skapat objekt tilldelas variabler och följaktligen (närmare bestämt får dessa variabler bara referenser till de angivna objekten, men detta spelar ingen roll för tillfället). Nu kan du få fastighetsvärdena med ett enkelt metodanrop (rad 15 och 16).
Tilldelar $ denna pseudovariabel
Observera: vi har två olika objekt med exakt samma metoder.
Och det är här den pseudovariable kommer till undsättning. Dess namn kan översättas från engelska till "detta", dvs. indikerar (är en länk) till objektet där det ligger. Som ett resultat kan rad 5 för läsas som "tilldela ett arguments värde till en objektegenskap", rad 8 - "returnera värdet på en objektegenskap". För kommer variabeln automatiskt att ta på sig lämpligt värde.