Переменная this - это специальная переменная, которая используется для доступа к объекту класса изнутри самого класса.
Фактически эта переменная будет содержать ссылку на объект класса. Но для каждого экземпляра класса она будет совершенно разной.
В нашем примере мы использовали переменную this для получения ссылки на наш объект. Для разных экземпляров класса эта переменная содержит все разные значения по сути эта переменная для доступа изнутри класса к собственным свойствам и методам, но только в контексте объекта. Переменной this нельзя ничего присвоить фактически ее использование полностью ограничено рамками данного класса.
Используется для обращения к внутреннему содержимому класса. Ключевое слово this использует знак $, чтобы подчеркнуть связь с переменными. А self без символа $ указывает на то, что идет обращение не к переменной.
Для того, чтобы воспользоваться self нам нужно объявить статическую переменную или статический метод нашего класса. Особенностью статических свойств и методов является то, что они объявляются не на уровне объекта, а на уровне самого класса. Статическое свойство будет недоступно через this, вместо этого у нас будет использоваться оператор ::, перед ним ставится либо имя класса, либо ключевое слово self.
Ключевое слово self употребляется исключительно внутри класса, вместе с this.
this - это обращение к свойствам и методам в контексте объекта.
self - это обращение к статическим свойствам и методам в контексте класса.