|
ОсновыclassКаждое определение класса начинается с ключевого слова class, затем следует имя класса, и далее пара фигурных скобок, которые заключают в себе определение свойств и методов этого класса. Именем класса может быть любое слово, которое не входит в список зарезервированных слов PHP, начинающееся с буквы или символа подчеркивания и за которым следует любое количество букв, цифр или символов подчеркивания. Если задать эти правила в виде регулярного выражения, то получится следующее выражение: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*. Класс может содержать собственные константы, переменные (называемые свойствами) и функции (называемые методами). Пример #1 Простое определение класса
<?php Псевдо-переменная $this доступна в том случае, если метод был вызван в контексте объекта. $this является ссылкой на вызываемый объект. Обычно это тот объект, которому принадлежит вызванный метод, но может быть и другой объект, если метод был вызван статически из контекста другого объекта. Это показано на следующих примерах:
Пример #2 Переменная $this
<?php Результат выполнения данного примера: $this определена (A) $this не определена. $this определена (B) $this не определена. newДля создания экземпляра класса используется директива new. Новый объект всегда будет создан, за исключением случаев, когда он содержит конструктор, в котором определен вызов исключения в случае ошибки. Рекомендуется определять классы до создания их экземпляров (в некоторых случаях это обязательно). Если с директивой new используется строка (string), содержащая имя класса, то будет создан новый экземпляр этого класса. Если имя находится в пространстве имен, то оно должно быть задано полностью. Пример #3 Создание экземпляра класса
<?php В контексте класса можно создать новый объект через new self и new parent. Когда происходит присвоение уже существующего экземпляра класса новой переменной, то эта переменная будет указывать на этот же экземпляр класса. Тоже самое происходит и при передаче экземпляра класса в функцию. Копию уже созданного объекта можно создать через ее клонирование. Пример #4 Присваивание объекта
<?php Результат выполнения данного примера: NULL NULL object(SimpleClass)#1 (1) { ["var"]=> string(30) "$assigned будет иметь это значение" } В PHP 5.3.0 введены несколько новых методов создания экземпляров объекта: Пример #5 Создание новых объектов
<?php Результат выполнения данного примера: bool(true) bool(true) bool(true) extendsКласс может наследовать методы и свойства другого класса используя ключевое слово extends при его описании. Невозможно наследовать несколько классов, один класс может наследовать только один базовый класс. Наследуемые методы и свойства могут быть переопределены (за исключением случаев, когда метод класса объявлен как final) путем объявления их с теми же именами, как и в родительском классе. Существует возможность доступа к переопределенным методам или статическим методам путем обращения к ним через parent:: Когда переопределяются методы число и типы аргументов должны оставаться такими же как и были, иначе PHP вызовет ошибку уровня E_STRICT. Это не относится к конструктору, который можно переопределить с другими параметрами. Пример #6 Простое наследование классов
<?php Результат выполнения данного примера: Расширенный класс значение по умолчанию |
|