Когато изучават интерпретирания език PHP, начинаещите уеб програмисти се натъкват на такова понятие като псевдо променливата $ this. Неговата цел и правила за използване в кода са много различни от всички други променливи, така че си струва да се спрем подробно на този въпрос.
Класове и предмети
Обектно-ориентираното програмиране (OOP), което се използва в PHP от версия 5, предоставя на програмиста възможността да създава произволен брой екземпляри от същия клас, наречени обекти; в този случай всяко създадено копие получава своето име. Обектът може да приема данни, наречени аргументи, да ги обработва с функции и да връща резултат. Всяка функция на клас може да осъществи достъп до свойствата си не директно, а само чрез конструкцията на обект-> свойство, така че възниква въпросът: как да напишем такъв универсален код, който ще позволи на всеки генериран обект да работи с данни, независимо от името му? Помислете за примера, показан на фигура 1.
Този код декларира клас, който има променлива (свойство) и две функции (методи), едната от които е конструктор, т.е. автоматично стартира, когато се създаде нов обект. Задачата на конструкторската функция е да присвоява данните на свойството, което се получава от аргумента при създаването на обекта. Когато бъде извикан, методът връща стойността на свойството.
След това разгледайте редове 12 и 13. В тях се създават два нови екземпляра на класа, единият от които получава числото 5 като аргумент, а другият - 7. Тези стойности се присвояват от функцията конструктор на променлива (свойство), което е достъпно само в рамките на класа. Всеки създаден обект се присвоява на променливи и съответно (по-точно тези променливи получават само препратки към посочените обекти, но това в момента няма значение). Сега можете да получите стойностите на свойствата с просто извикване на метод (редове 15 и 16).
Присвояване на $ тази псевдопроменлива
Моля, обърнете внимание: имаме два различни обекта с абсолютно еднакви методи.
И тук на помощ идва псевдопроменливата. Името му може да се преведе от английски като "това", т.е. указва (е връзка) към обекта, в който се намира. В резултат на това ред 5 за може да се чете като „присвояване на стойността на аргумент на свойство на обект“, ред 8 - „връщане на стойността на свойство на обект“. Защото променливата автоматично ще приеме съответната стойност.