PHP підтримує класи та інші об'єктно-орієнтовані конструкції.
class exampleClass public static $ foo; публічний $ бар; публічна функція regularFunction () echo $ this-> bar; публічна статична функція staticFunction () echo self :: $ foo; публічна статична функція elseStatFn () self :: staticFunction (); публічна функція regularFnUsingStaticVar () echo self :: $ foo; // ПРИМІТКА: На основі PHP 5.3 використання $ this :: $ bar замість self :: $ bar дозволено exampleClass :: $ foo = "Привіт"; $ obj = новий прикладClass (); $ obj-> bar = "Світ!"; exampleClass :: staticFunction (); / * друкує Hello * / $ obj-> regularFunction (); / * друкує світ! * /
Статичні функції можуть використовувати лише статичні змінні. Статичні функції та змінні посилаються через Я ::functionName () або Я ::зміннийНазви. У наведеному вище прикладі статичні змінні посилаються на ім'я класу (exampleClass :: $ foo) або з a Я :: (self :: $ foo) при використанні в статичному методі [з ім'ям staticFunction ()] класу.
Регулярні функції та змінні класу потребують посилання на контекст об'єкта. Вони не можуть існувати без об'єктного контексту. Об'єктний контекст забезпечується $ це. У наведеному вище прикладі $ bar є звичайною змінною, тому вона посилається як $ obj-> bar (в контексті об'єкта зі змінною obj) або як $ this-> bar (знову в контексті об'єкта в межах методу об'єкта).
Я не використовує попереднє $ оскільки Я не конотує змінну, а сама конструкція класу. $ це робить посилання на певну змінну, тому вона має попередню $.