Отправляет email-рассылки с помощью сервиса Sendsay

Создание CMS

  Все выпуски  

Создание CMS - Модель данных. Часть 2


Модель данных. Часть 2

Продолжаем тему объектной модели данных. В этой части речь пойдет о модуле Data, являющимся, по сути, ORM системой. Для наглядности работы модуля Data c его помощью будет создано содержимое простого сайта.

Модуль Data состоит из классов Data, Object, Multy, Query и набора классов Cond*. Сам модуль – это статический класс Data, остальные классы используются для представления структур данных, с которыми он работает. Для представления сущностей в программном коде используется класс Object. Не важно, какого типа сущность – класс данных, объект данных или связь между ними – для всех Object. Класс Multy используется для ассоциации с набором сущностей, в частности, для представления множественных свойств. Классы Query и Cond* необходимы для осуществления поиска по объектной модели (в базе данных) с учетом гибких условий.

Чтение сущности

Получить сущность из базы данных можно по её идентификатору следующим способом:

$obj = Object::Create(1); // сущность с идентификатором 1  

Вместо оператора new применяется статический метод Create(). В нём проверяется существование экземпляра запрашиваемой сущности, возможно, сущность уже загружена из базы данных. Если загружена, метод Create() возвратить ссылку на её экземпляр, иначе экземпляр, ассоциируемый с запрашиваемой сущностью, будет сначала создан и потом уже возвращена ссылка на него.

После получения сущности, её можно полноценно использовать, например, обратиться к её классу и узнать системное имя.

echo $obj->getP('class')->getA('sys_name');  

Обратите внимание, загруженная сущность – это класс, но работа выполняется с ним как с объектом. Сущность загружается из БД по требованию, то есть реальное обращение к базе данных происходит только при первом обращении к свойствам или атрибутам сущности, более того, загружаются только те свойства (сущности с которыми выполнена связь), которые используются.

Читать дальше с картинками →

© Владимир Шестаков. ICQ: 209-504-733. http://boolive.ru

В избранное