Статические свойства и методы класса




В отличие от обычных, статические поля одинаковы для всех экземпляров класса и изменение статического свойства приведёт к его изменению для всех экземпляров класса. Обращение к статическим членам внутри класса производится при помощи ключевого слова self, а при их объявлении пишется ключевое слово static. Обращение к статическим членам извне класса производится с указанием имени класса. Для доступа к ним используется символ '::'. Статические методы не имеют доступ к обычным (нестатическим) членам, так как в противном случае было бы непонятно к какому экземпляру класса относятся эти нестатические члены, к которым обращается статический метод.

Пример:

В примере продемонстрирована работа со статическим полем $loverCount, обращение к нему как внутри класса, так и за его пределами. При создании нового экземпляра класса, значение статического поля увеличивается. Статический метод вывод сообщение – применение $this недопосутимо.

Задание 11

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

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

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

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

Оператор instanceof

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

$object instanceof ClassName;

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

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

Пример:

Задание 12

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

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

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

 

Метод __toString()

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

Пример:

 

Задание 13

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

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

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

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

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

 

Функция _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".


МОДУЛЬ 3

Задание 15

Создать класс-оболочку для работы с БД, минимальный функционал которого позволяет установить соединение с сервером и подключиться к БД, выполнить запросы SELECT, UPDATE, DELETE. Продемонстрируйте пример работы.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: