PHP поддерживает классы и другие объектно-ориентированные конструкции.
class exampleClass public static $ foo; публичный бар $; public function normalFunction () echo $ this-> bar; публичная статическая функция staticFunction () echo self :: $ foo; публичная статическая функция anotherStatFn () self :: staticFunction (); public function normalFnUsingStaticVar () echo self :: $ foo; // ПРИМЕЧАНИЕ: Начиная с PHP 5.3 использование $ this :: $ bar вместо self :: $ bar разрешено exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "World!"; ExampleClass :: staticFunction (); / * печатает Hello * / $ obj-> normalFunction (); / * печатает мир! * /
Статические функции могут использовать только статические переменные. На статические функции и переменные ссылаются через самостоятельно ::functionName () или самостоятельно ::имяПеременный. В примере, показанном выше, на статические переменные ссылаются с именем класса (exampleClass :: $ foo) или с самостоятельно :: (self :: $ foo) при использовании в статическом методе [по имени staticFunction ()] класса.
Обычные функции и переменные класса нуждаются в объектном контексте для ссылки. Они не могут существовать без контекста объекта. Контекст объекта предоставляется $ this-. В приведенном выше примере $ bar является обычной переменной, поэтому на нее ссылаются как $ obj-> bar (в контексте объекта с переменной OBJ) или как $ this-> bar (снова в контексте объекта в методе объекта).
сам не использует предыдущий $ так как сам не обозначает переменную, а сам класс. $ this- ссылается на конкретную переменную, поэтому она имеет предшествующий $.