- •2. Управляющие структуры языка php
- •3. Работа с массивами.
- •4. Ассоциативные массивы
- •5. Создание пользовательских функций, передача параметров функции и области видимости переменных
- •6. Функции для работы со строками
- •7. Функции даты/времени и работы с календарем
- •8. Работа с файлами
- •9. Операции с содержимым файлов
- •10. Работа с каталогами
- •11. Регулярные выражения, сопоставление и поиск с шаблоном.
- •Базовый синтаксис и создание регулярных выражений
- •12. Работа с динамическими изображениями
- •ImageGif (идентификатор, [имя файла])
- •14. Управление интерпретатором php
- •15. Отслеживание сеанса, управление сессиями и cookies.
- •16. Работа с бд mysql
- •17. Объектно-ориентированное программирование, создание классов и объектов, доступ к методам и свойствам объекта.
- •18. Сообщения об ошибках языка
- •18. Структура xml – документа. Правила создания. Конструкции языка. (Подробное описание) Структура документа
- •Определение типа документа (dtd).
- •Объявления
- •Объявление xml
- •Объявление типа документа
- •Где могут храниться dtd
- •Объявления элементов и атрибутов xml документа.
- •22. Свойства и методы элементов документа.
- •23. Типы атрибутов xml документа.
- •25. Обработка xml-документов php скриптами
- •26. Стилевые таблицы xsl. Структура xsl- таблиц. Что такое xsl?
- •Правила xsl
- •Корневое правило
- •Отношения между элементами
- •Приоритеты правил
- •27. Встроенные функции xsl.
- •28.Сценарии xsl.
- •29.Использование атрибутов элементов в xsl.
- •30. Фильтрация элементов в xsl. Фильтрация элементов
17. Объектно-ориентированное программирование, создание классов и объектов, доступ к методам и свойствам объекта.
Объектно-ориентированные программы более просты и мобильны, их легче модифицировать и сопровождать.
Классы и объекты
Класс — это просто тип переменной. Переменная класса (объект класса) является в некотором смысле автономной
сущностью. Обычно такой объект имеет набор свойств и операций (или методов), которые могут быть с ним проведены. Например, тип int—класс. Переменная этого "класса" будет обладать одним свойством (ее целым значением), а также набором методов (сложение, вычитание, инкремент и т. д.).
Создание классов:
class MyName {
описания свойств
определения методов
}
$0bj = new MyName -- в программе существует объект $obj, который "ведет себя" так
же, как и все остальные объекты класса MyName.
Свойства объекта
Свойство —это просто своеобразная переменная внутри объекта класса, в которой может храниться какое-то значение.
Каждый объект одного и того же класса имеет свой собственный набор значений свойств, и они не пересекаются. Таким образом, объект класса со стороны представляется контейнером, хранящим
свои свойства.
Объявление свойств задается при помощи ключевого слова var:
var $pNamel, $pname2, . . . ;
Rаждое свойство должно иметь уникальное имя в классе. Инструкций var может быть несколько, и они могут встречаться в любом месте описания класса, а не только в его начале.
Получение доступ к какому-то свойству определенного объекта. ->:
echo $Obj->Namel;
$Obj->Name2="PHP Four";
Если какое-то свойство (например, с именем Subobj) объекта само является объектом (что вполне допустимо), нужно использовать две "стрелочки":
echo SObj->SubObj->Property; // Выводим значение свойства Property
Такой синтаксис был придуман из того расчета, чтобы быть максимально простым. Добавлю, что указание объекта $obj перед стрелкой обязательно по той причине, что каждый объект имеет свой собственный набор свойств.
Методы
Основная идея ООП — инкапсуляция — базируется на объединении данных (свойств) объекта с функциями, которые эти данные обрабатывают. Фактически, свойства хранят в себе состояние объекта в данный момент времени, тогда как методы (функции обработки) являются чем-то вроде механизма посылки запроса экземпляру класса (объекту). MySQL: Drop ( ) , заставляет таблицу очистить и удалить себя из базы данных. Вызов этого метода из программы происходит примерно так:
$Obj->Drop(); // таблица $0bj удаляет сама себя!
К примеру, метод Add того же класса (добавление новой записи в таблицу) принимает только один параметр — ассоциативный массив, содержащий данные, а метод select о (получить все записи, удовлетворяющие запросу) использует три параметра — логическое выражение запроса, максимальное
количество получаемых записей и правила сортировки результата. Он возвращает массив с результирующими записями.
Доступ объекта к своим свойствам
$0bjl=new Mysqltable;
$Obj2=new MysqlTable;
echo $Objl->TableName, " ", $Obj2->TableName;
Здесь никаких проблем не возникает — ясно, что выводятся свойства разных объектов — мы же сами указали их до стрелки. Однако давайте посмотрим, что будет, если вызвать какой-нибудь метод одного из объектов:
$Objl->Drop() ;
При вызове метода так же, как и при доступе к свойству, нужно указать объект, который должен "откликнуться на запрос".
Оказывается, для доступа к свойствам (и методам, т. к. один метод вполне может вызывать другой) внутри метода используется специальная предопределенная переменная $this, содержащая тот объект, для которого был вызван метод.
Метод всегда знает, для какого объекта он был вызван.
Использование ссылок говорит о том, что $this — не просто копия объекта-хозяина, это и есть хозяин. Например, если бы в $obj1->Drop ( ) мы захотели изменить какое-то свойство $this, оно поменялось бы и у $objl, но не у $obj2 или других объектов.
Не забудьте про & сразу после оператора присваивания (то есть создавайте ссылку на элемент массива), иначе метод Doit () будет вызван не для самого объекта, присутствующего в массиве, а для его копии, полученной в $obj.