| |
— ведь мы просто используем его как контейнер для хранения свойств.
Поэтому давайте поговорим о более существенном отличии — методах класса.
Часть V. Приемы программирования на PHP 456
Методы
Основная идея ООП — инкапсуляция — базируется на объединении данных (свойств)
объекта с функциями, которые эти данные обрабатывают. В самом деле, почему это
мы привыкли разграничивать информацию и методы ее обработки? Разве, в конце
концов, эти методы сами не являются информацией? Зачем же разделять нераздели-
мые сущности?..
Фактически, свойства хранят в себе состояние объекта в данный момент времени,
тогда как методы (функции обработки) являются чем-то вроде механизма посылки
запроса экземпляру класса (объекту). Например, в классе таблицы MySQL, которую
мы с вами вскоре напишем, может быть довольно большой набор методов. Самый
простой из них — Drop(), заставляющий таблицу очистить и удалить себя из базы
данных. Вызов этого метода из программы происходит примерно так:
$Obj->Drop(); // таблица $Obj удаляет сама себя!
Конечно, у методов, как и у обычных функций, могут быть параметры.
К примеру, метод Add() того же класса (добавление новой записи в таблицу)
прини-
мает только один параметр — ассоциативный массив, содержащий данные, а метод
Select() (получить все записи, удовлетворяющие запросу) использует три парамет-
ра — логическое выражение запроса, максимальное количество получаемых записей
и правила сортировки результата. Он возвращает массив с результирующими запи-
сями.
Класс таблицы MySQL
Пожалуй, я слишком далеко заглянул в будущее. Вернемся назад к основам. Чтобы
определить метод внутри класса, используется следующий синтаксис:
сlass MyClass {
. . .
function Method(параметры)
{ . . .
}
. . .
}
Давайте будем потихоньку набрасывать план нашего класса MySQL-таблицы. Во
первых, зададимся вопросом: зачем нам вообще это нужно? Почему бы не пользо-
ваться обычными функциями для работы с MySQL? Ответ не вполне очевиден, по-
этому оставим его на потом. А пока будем считать, что такой класс нам необходим
(а
он действительно необходим, т. к. значительно упрощает работу с базой данных).
Во-вторых, сформулируем правило: обращаться к какой-то таблице MySQL только
посредством нашего класса, а точнее, объекта этого класса, связанного с
таблицей.
Как же его связать? Очевидно, объект должен содержать имя таблицы, к которой он
Глава 31. Объектно-ориентированное программирование на PHP 457
"привязан". Так как в программе могут использоваться одновременно несколько
таб-
лиц и несколько объектов, то, наверное, логично это самое имя хранить в виде
свой-
ства.
Что бы еще хотелось знать об объекте-таблице? Конечно, имена и типы ее полей.
По-
местим их в свойство-массив. Наконец, в процессе работы наверняка иногда будут
возникать ошибки. Чтобы как-то сигнализировать о них, предлагаю в класс-таблицу
ввести еще одно свойство — Error. Оно будет равно нулю, если предыдущая опера-
ция (например, добавление записи) прошла успешно, и тексту ошибки — в против-
ном случае.
Вот что у нас пока получилось:
class MysqlTable {
var $TableName; // Имя таблицы в базе данных
var
|
|