|
Б4. Классы и объекты в PHP
Цель работы
Получить навыки работы с классами и объектами в PHP 5.
Освоить следующие возможности объектной модели в PHP 5: модификаторы области видимости (private, public, protected),
клонирование, константы, наследование, специальные методы (__clone, __construct)
Описание работы
Выполнить следующие пункты задания, объяснить результат
#
|
Задание
|
1
|
Описать класс NotePad, содержащий
- Свойства:
- $phone - свойство должно быть доступно только в контексте класса;
- $name - свойство должно быть доступно как в контексте класса,
так и вне его;
- $surname - свойство должно быть доступно как в контексте класса,
так и вне его.
- Константы:
- TEXT_SIZE = 20 - максимальная длина строки для свойств класса
- Методы:
-
- note_show - выводит значение $phone, $name, $surname и TEXT_SIZE.
|
2
|
Создать экземпляр $note1 класса NotePad. Вызвать метод note_show. Вывести значение TEXT_SIZE без использования метода note_show
|
3
|
Добавить в класс конструктор, принимающий три аргумента и устанавливающий значение свойств $phone, $name и $surname соответственно.
Создать экземпляр $note2 класса NotePad. Вывести значение свойств класса с помощью метода note_show
|
4
|
Определить метод __clone() так, чтобы при клонировании значение свойств $phone, $name, $surname обнулялось. Создать
копию $note2_copy объекта $note2. Вызвать метод note_show для объекта $note2_copy
|
5
|
Создать класс NoteChild, наследующий NotePad. В классе NoteChild переопределите метод note_show следующим образом:
а) note_show выводит имя текущего класса (см. набор предопределенных констант magic constants);
a) note_show выводит строку "Вызов родительского метода note_show ...";
б) вызывает метод note_show родительсткого класса
|
6
|
Создать объект $child1 класса NoteChild. Вызвать метод note_show. Создать копию $child1_copy объекта $child1.
Вывести значение свойств $phone, $name, $surname для объекта $child1_copy
|
7
|
Добавить в класс NoteChild метод cut_note, который обрезает строковые значения свойств $phone, $name, $surname до
максимальной длины, разрешенной значением константы TEXT_SIZE. Создать объект $child2 класса NoteChild и вызвать
для него метод cut_note. Вывести значения свойств $phone, $name, $surname для объекта $child2.
Чтобы обрезать строки можно использовать функции для мультибайтовых строк mb_substr или
mb_strcut, установив значение кодировки "UTF-8".
Обратите внимание на ошибку при обращении к частному (private) свойству $phone. Измените модификатор области видимости
для $phone, чтобы избежать ошибки.
|
|