САМОУЧИТЕЛЬ PHP 4



         

Класс таблицы MySQL - часть 2


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

Листинг 31.1. Эскиз класса таблицы

class MysqlTable {

 var $TableName; // Имя таблицы в базе данных

 var $Fields; // Массив полей. Ключ — имя поля, значение — его тип

 var $Error; // Индикатор ошибки

 // Добавляет в таблицу запись $Rec. $Rec должна представлять из себя

 // обычный ассоциативный массив. В будущем мы придем к тому, что

 

// массив $Rec будет представлен даже древовидной структурой,

 // т. е. будет иметь подмассивы.

 // Как вы понимаете, непосредственной поддержки этого в MySQL нет,

 // но мы "ее" реализуем.

 function Add($Rec) { команды; }

 // Возвращает массив записей (ключ — id записи, значение —

 // ассоциативный массив, в точности такой же, какой был помещен

 // некогда в таблицу при помощи Add), удовлетворяющих выражению

 // $Expr. Возвращаются только первые $Num (или менее) записей.

 // Сортировка осуществляется в соответствии с критерием $Order.

 function Select($Expr,$Num=1e10,$Order="id desc") { команды; }

 // Удаляет из таблицы все записи, удовлетворяющие выражению $Expr.

 function Delete($Expr) { команды; }

 // Удаляет из таблицы все записи (например, при помощи вызова

 // Delete("1=1") и удаляет саму таблицу из базы данных. Этот

 // метод довольно опасен!

 function Drop() { команды; }

}

Пока, пожалуй, хватит. Я не буду здесь углубляться в то, как устроен каждый из названных методов. Этим мы займемся в свое время. А пока обратите внимание на то, что мы попытались определить все операции, которые вообще применимы к таблице MySQL (на самом деле, это далеко не полный их перечень, но пока нам и такого количества вполне достаточно). Это очень важно, потому что потом, когда будем использовать объекты класса MysqlTable, мы сможем вообще забыть, что такое MySQL и язык запросов SQL, или поручить разработку программы, обращающейся к MysqlTable, человеку, не разбирающемуся в SQL.

Вообще говоря, это один из самых главных приемов ООП (структурного программирования — в меньшей степени) — постоянно размышлять, как бы нам сделать так, чтобы потом можно было побольше "забыть". Работает принцип: если вы используете какой-то класс и не догадываетесь, как он реализован, причем это вам нисколько не мешает, значит, класс хорош.

И наоборот. Впрочем, совсем абстрагироваться от SQL нам все же не удастся — все-таки нужно знать правила составления выражений для выборки и удаления записей, для их сортировки и т. д. Но это уже не SQL, а что-то гораздо более простое и интуитивно понятное.




Содержание  Назад  Вперед