Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_05_OOP_PHP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
697.82 Кб
Скачать

Задание 11

  1. Опишите в классах User и SuperUser статические свойства для подсчета количества созданных объектов;

  2. Присвойте этим свойствам начальные значения (0);

  3. В конструкторах инкрементируйте значения данных свойств;

  4. После создания экземпляров классов User и SuperUser выведите в браузер количество тех и других объектов.

12 Оператор instanceof

Этот оператор возвращает булево значение, показывающие относится ли объект к заданному классу или нет. Синтаксис этого оператора:

$object instanceof ClassName;

При этом этот оператор возвращает true даже если слева стоит экземпляр класса-наследника от класса, имя которого указанно справа.

Оператор instanceof удобно применять, когда необходимо убедится в наличии у экземпляра необходимых данных или функционала, которые присущи экземпляром какого-нибудь класса.

Пример:

Задание 12

  1. Опишите функцию checkObject(), которая принимает в качестве входящего параметра объект;

  2. Проверьте Ваш объект, используя следующие условия: Если объект является экземпляром класса SuperUser, выводите сообщение, что данный пользователь обладает правами администратора;

  3. Если объект является экземпляром класса User, выводите сообщение, что данный пользователь является обычным пользователем. Если объект не является ни тем, ни другим, выводите сообщение, что данный пользователь - неизвестный пользователь.

13 Метод __toString()

Метод __toString() позволяет классу решать самостоятельно, как он должен реагировать при преобразовании в строку. Для того чтобы подставить значение переменных необходимо строку поместить в двойные кавычки. 

Пример:

Задание 13

  1. Создайте свойство objNum, которое будет хранить порядковый номер объекта.

Подумайте, где лучше его создать?

  1. Внесите изменения в классе User (а может и в SuperUser?), которые будут присваивать свойству objNum, порядковый номер объекта.Подумайте, где и как лучше это сделать?

  2. В классе User (а может и в SuperUser?) опишите метод __toString(). Данный метод должен возвращать строку в формате «Объект #objNum: name». Например: «Объект #3: Василий Пупкин»;

  3. Попробуйте преобразовать один из созданных Вами объектов в строку.

14 Функция _autoload()

Многие разработчики, пишущие объектно-ориентированные приложения, создают один файл, в котором содержится определение класса. Очень неудобно писать в начале каждого скрипта длинный список включаемых файлов по одному на каждый класс.

Начиная с PHP 5 в этом больше нет необходимости. Вы можете определить функцию __autoload() , которая автоматически будет вызываться в случае использования класса, который не был определен выше. Это позволяет сделать автоматическую подгрузку файлов с описанием классов (в тот момент, когда мы начинаем использовать этот класс, в случае, если класс в сценарии не используется- то и файл с его описанием не будет подключаться) и избавиться от множественных инструкций include.

Пример:

Задание 14

  1. В директории "oop" создайте файл "User.class.php";

  2. Перенесите описание класса User из файла "users.php" в файл "User.class.php";

  3. В директории "oop" создайте файл "SuperUser.class.php";

  4. Перенесите описание класса SuperUser из файла "users.php" в файл "SuperUser.class.php";

  5. Посторите те же действия для класса AUser и интерфейса ISuperUser;

  6. В файле "users.php"(данный файл) опишите функцию __autoload(), которая автоматически присоединяет файлы с описанием классов к файлу "users.php".

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]