Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
Fields; // Массив полей. Ключ — имя поля, значение — его тип 
var $Error; // Индикатор ошибки 
. . . 
} 
Согласитесь, это почти все данные, которые должны храниться в объекте-таблице. 
Все 
остальное (например, записи) находится в базе данных. Нам нужно научиться 
каким-то 
образом легко извлекать и добавлять (а также удалять, подсчитывать и обновлять) 
эти 
записи путем простых запросов к объекту-таблице. Для этого я предлагаю написать 
соот- 
ветствующие методы (листинг 31.1). 
Пока мы не будем расписывать код методов. Взамен просто обозначим его 
словом "команды" в тексте программы. Вообще говоря, такой способ проекти- 
рования, когда сначала решают, какие методы нам нужны, а потом начинают 
продумывать их код, довольно типичен для ООП. 
Листинг 31.1. Эскиз класса таблицы 
class MysqlTable { 
var $TableName; // Имя таблицы в базе данных 
var $Fields; // Массив полей. Ключ — имя поля, значение — его тип 
var $Error; // Индикатор ошибки 
// Добавляет в таблицу запись $Rec. $Rec должна представлять из себя 
// обычный ассоциативный массив. В будущем мы придем к тому, что 
// массив $Rec будет представлен даже древовидной структурой, 
// т. е. будет иметь подмассивы. 
// Как вы понимаете, непосредственной поддержки этого в MySQL нет, 
// но мы "ее" реализуем. 

Часть V. Приемы программирования на PHP 458 
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. 
Вообще говоря, это один из самых главных приемов ООП (структурного программи- 
рования — в меньшей степени) — постоянно размышлять, как бы нам сделать так, 
чтобы потом можно было побольше "забыть". Работает принцип: если вы используете 

какой-то класс и не догадываетесь, как он реализован, причем это вам нисколько 
не 
мешает, значит, клас
 
<<-[Весь Текст]
Страница: из 287
 <<-