Při učení interpretovaného jazyka PHP se začínající weboví programátoři setkávají s takovým konceptem, jako je pseudo proměnná $ this. Jeho účel a pravidla použití v kódu se velmi liší od všech ostatních proměnných, takže stojí za to se podrobně zabývat touto otázkou.
Třídy a předměty
Objektově orientované programování (OOP), které se v PHP používá od verze 5, poskytuje programátorovi možnost vytvářet libovolný počet instancí stejné třídy, nazývaných objekty; v tomto případě dostane každá vytvořená kopie své vlastní jméno. Objekt může převzít data zvaná argumenty, zpracovat je pomocí funkcí a vrátit výsledek. Jakákoli funkce třídy může přistupovat k jejím vlastnostem ne přímo, ale pouze prostřednictvím konstrukce objektu-> vlastnost, takže vyvstává otázka: jak napsat takový univerzální kód, který umožní libovolnému generovanému objektu pracovat s daty, bez ohledu na jeho název? Zvažte příklad zobrazený na obrázku 1.
Tento kód deklaruje třídu, která má proměnnou (vlastnost) a dvě funkce (metody), z nichž jedna je konstruktor, tj. automaticky se spustí při vytvoření nového objektu. Úkolem funkce konstruktoru je přiřadit data vlastnosti, která je přijata argumentem při vytváření objektu. Metoda při volání vrátí hodnotu vlastnosti.
Dále zvažte řádky 12 a 13. V nich se vytvoří dvě nové instance třídy, z nichž jedna obdrží jako argument číslo 5 a druhá - 7. Tyto hodnoty jsou přiřazeny funkcí konstruktoru proměnné (vlastnost), která je přístupná pouze v rámci třídy. Každý vytvořený objekt je přiřazen k proměnným a podle toho (přesněji, tyto proměnné dostávají pouze odkazy na určené objekty, ale to v tuto chvíli nezáleží). Nyní můžete získat hodnoty vlastností jednoduchým voláním metody (řádky 15 a 16).
Přiřazení $ tato pseudo-proměnná
Vezměte prosím na vědomí: máme dva různé objekty s přesně stejnými metodami.
A právě zde přichází na pomoc pseudovariable. Jeho název lze z angličtiny přeložit jako „this“, tj. označuje (je odkaz) na objekt, ve kterém se nachází. Ve výsledku lze řádek 5 pro číst jako „přiřadit hodnotu argumentu vlastnosti objektu“, řádek 8 - „vrátit hodnotu vlastnosti objektu“. Proměnná bude automaticky nabývat příslušné hodnoty.