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



         

Полноценный класс таблицы MySQL - часть 3


Согласитесь, не так уж и мало для каких-то четырехсот строчек кода.….. Листинг 31.2 представляет собой исходный текст библиотеки, реализующей наш класс. Она предполагает, что соединение с MySQL уже открыто и выбрана верная текущая база данных.

Листинг 31.2. Полноценный класс MySQL-таблицы

<?

// MysqlTable — "прозрачная работа" с таблицей MySQL.

// Класс MysqlTable обычно делают базовым для какого-нибудь

// другого класса (например, CGuestBook), и переопределяют

// нужные функции.

// Поле для хранения сериализованных полей (снаружи "не видно")

define("DataField","__data__");

//******************* Вспомогательные функции *******************

// Если переменная пуста, инициализирует ее

function Def0(&$st,$def) { if(!isSet($st)||$st=="") $st=$def; }

// Подготавливает строку двоичных данных для помещения в таблицу.

function Apostrophs(&$st)

{ $st=str_replace(chr(0),"\\0",$st);

 $st=ereg_replace("\\\\","\\\\",$st);

 $st=ereg_replace("'","\\'",$st);

 return $st;

}

// Упаковывает объект и превращает его в строку.

function SqlPack(&$obj)

{ $s=Serialize($obj); return Apostrophs($s); }

// Распаковывает строку и создает объект.

function SqlUnpack(&$st) { return Unserialize($st); }

//****************************************************************

//*** Далее идет описание класса таблицы.

// Каждая запись таблицы, помимо тех полей, которые указаны в

// конструкторе, будет иметь еще два поля — id (уникальный

// идентификатор записи) и __data__ (упакованный массив

// всех остальных полей). Кроме того, в запись можно вводить

// произвольные поля — они тоже будут сохраняться, но по

// ним нельзя будет вести поиск (предложение "select"),

// потому что эти поля будут автоматически сериализованы при

// добавлении/изменении записи и распакованы при извлечении.

class MysqlTable {

//*** Внутренние переменные

var $TableName; // имя таблицы




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