- •Объектно-ориентированное программирование на php
- •Три принципа ооп
- •Модуль 1
- •1 Классы и объекты в php
- •Доступ к полям класса
- •Доступ к методам класса
- •Задание 1
- •2 Конструкторы и Деструкторы
- •Задание 2
- •3 Явное клонирование объекта
- •Задание 3:
- •4 Наследование и полиморфизм классов в php
- •Задание 4:
- •5 Перегрузка методов
- •Задание 5
- •6 Обращение к полям и методам класса-предка
- •Задание 6
- •7 Обработка исключительных ситуаций (исключений)
- •Задание 7
- •8 Константы класса
- •Задание 8
- •Модуль 2
- •9 Абстрактные методы и классы
- •Задание 9
- •10 Интерфейсы
- •Задание 10
- •11 Статические свойства и методы класса
- •Задание 11
- •12 Оператор instanceof
- •Задание 12
- •13 Метод __toString()
- •Задание 13
- •14 Функция _autoload()
- •Задание 14
- •Модуль 3 Задание 15
Задание 11
Опишите в классах User и SuperUser статические свойства для подсчета количества созданных объектов;
Присвойте этим свойствам начальные значения (0);
В конструкторах инкрементируйте значения данных свойств;
После создания экземпляров классов User и SuperUser выведите в браузер количество тех и других объектов.
12 Оператор instanceof
Этот оператор возвращает булево значение, показывающие относится ли объект к заданному классу или нет. Синтаксис этого оператора:
$object instanceof ClassName;
При этом этот оператор возвращает true даже если слева стоит экземпляр класса-наследника от класса, имя которого указанно справа.
Оператор instanceof удобно применять, когда необходимо убедится в наличии у экземпляра необходимых данных или функционала, которые присущи экземпляром какого-нибудь класса.
Пример:
Задание 12
Опишите функцию checkObject(), которая принимает в качестве входящего параметра объект;
Проверьте Ваш объект, используя следующие условия: Если объект является экземпляром класса SuperUser, выводите сообщение, что данный пользователь обладает правами администратора;
Если объект является экземпляром класса User, выводите сообщение, что данный пользователь является обычным пользователем. Если объект не является ни тем, ни другим, выводите сообщение, что данный пользователь - неизвестный пользователь.
13 Метод __toString()
Метод __toString() позволяет классу решать самостоятельно, как он должен реагировать при преобразовании в строку. Для того чтобы подставить значение переменных необходимо строку поместить в двойные кавычки.
Пример:
Задание 13
Создайте свойство objNum, которое будет хранить порядковый номер объекта.
Подумайте, где лучше его создать?
Внесите изменения в классе User (а может и в SuperUser?), которые будут присваивать свойству objNum, порядковый номер объекта.Подумайте, где и как лучше это сделать?
В классе User (а может и в SuperUser?) опишите метод __toString(). Данный метод должен возвращать строку в формате «Объект #objNum: name». Например: «Объект #3: Василий Пупкин»;
Попробуйте преобразовать один из созданных Вами объектов в строку.
14 Функция _autoload()
Многие разработчики, пишущие объектно-ориентированные приложения, создают один файл, в котором содержится определение класса. Очень неудобно писать в начале каждого скрипта длинный список включаемых файлов по одному на каждый класс.
Начиная с PHP 5 в этом больше нет необходимости. Вы можете определить функцию __autoload() , которая автоматически будет вызываться в случае использования класса, который не был определен выше. Это позволяет сделать автоматическую подгрузку файлов с описанием классов (в тот момент, когда мы начинаем использовать этот класс, в случае, если класс в сценарии не используется- то и файл с его описанием не будет подключаться) и избавиться от множественных инструкций include.
Пример:
Задание 14
В директории "oop" создайте файл "User.class.php";
Перенесите описание класса User из файла "users.php" в файл "User.class.php";
В директории "oop" создайте файл "SuperUser.class.php";
Перенесите описание класса SuperUser из файла "users.php" в файл "SuperUser.class.php";
Посторите те же действия для класса AUser и интерфейса ISuperUser;
В файле "users.php"(данный файл) опишите функцию __autoload(), которая автоматически присоединяет файлы с описанием классов к файлу "users.php".
