rusadrako / model_obj
Модели объектов
0.3.4
2022-02-02 05:21 UTC
Requires
- php: >=7.0.0
- rusadrako/driver_db: >=1.1
README
Модели объектов
Подключение
Для подключения библиотеки к проекту подключите файл src/autoload.php
Доступные классы
Начало работы
$data = new $class($obj_db, $class_obj_name, $class_obj_list_name);
- $class - Имя класса, наследующего класс
RD_Obj_Data
- $obj_db - Объект подключения к БД, наследующий класс
\RD_DB
(проектrusadrako\driver_db
) - $class_obj_name - Имя класса, наследующего класс
RD_Obj_Item
- $class_obj_list_name - Имя класса, наследующего класс
RD_Obj_List
Настройка объекта RD_Obj_Data
namespace \test; /** Класс data */ class data extends \RD_Obj_Data { /** Настройки объекта */ protected function setting() { $this->table_name = 'table_test'; # Имя таблицы в БД } /** Пример получения объекта со списком записей */ public function getList($where) { # ... Дополнительные настройки $sql = "SELECT :col: FROM :tab: WHERE {$where}"; $data = $this->select($sql); return $data; } /** Пример получения объекта записи */ public function getItem($where) { # ... Дополнительные настройки $sql = "SELECT :col: FROM :tab: WHERE id = {$where}"; $data = $this->select($sql); $data = $data->first(); return $data; } /** Пример получения объекта со списком записей с заполнением дополнительного свойства объекта */ public function getListAddProp($where) { # ... Дополнительные настройки $sql = "SELECT :col:, 1 AS ADD_NAME FROM :tab: WHERE id = {$where}"; $data = $this->select($sql); $data = $data->first(); return $data; } # ... Методы расширения класса }
Методы объекта RD_Obj_Data
Настройка объекта RD_Obj_Item
namespace \test; /** Класс item */ class item extends \RD_Obj_Item { /** Подготовка данных к var_dump() и серилизации JSON (JsonSerializable) * / protected function __preparationData($arr) { $arr = parent::__preparationData($arr); # Получение массива для вывода # ... Дополнительные настройки return $arr; }/**/ /** Настройки объекта */ protected function setting() { # Ключевое поле объекта $this->set_column_id('id'); # ID записи # Остновные свойства объекта (переопределяются в процессе работы, сохраняется через save()) # Имя поля связанной таблицы => псевдоним (имя свойства) $column = [ 'id' => 'ID', # ID записи 'title' => 'TITLE', # Заголовок 'updated' => 'UPDATED', # Дата обновления 'created' => 'CREATED', # Дата создания ]; foreach ($column as $k => $v) { $this->set_column_name($k, $v); } # Дополнительные свойства объекта (переопределяются в процессе работы, не сохраняется через save()) $add_prop = [ 'ADD_NAME' => null, ]; foreach ($add_prop as $k => $v) { $this->set_add_data($k, $v); } # Вычисляемые свойства объекта (в процессе работы не могут быть переопределены) $function = [ 'FUNC_NAME' => function() {return $this->TITLE . $this->ID;}, ]; foreach ($function as $k => $v) { $this->set_gen_data($k, $v); } # Объктные свойства объекта (в процессе работы не могут быть переопределены) $object = [ 'OBJ_NAME' => new \test\new_class(), ]; foreach ($object as $k => $v) { $this->set_sub_obj($k, $v); } } /** Фильтры при заполнении свойств объекта */ protected function filter($name, $value) { switch ($name) { case 'ID': $value = (int) $value; break; } return $value; } /** Сохранение записи */ public function save() { # ... Дополнительные настройки parent::save(); # Сохранения записи } # ... Методы расширения класса }
Методы объекта RD_Obj_Data
trait__data__set
trait__data_preparation
trait__data
trait__link_obj
trait__data__db
Настройка объекта RD_Obj_List
namespace \test; /** Класс list_t */ class list_t extends \RD_Obj_List { /** Подготовка данных к var_dump() и серилизации JSON (JsonSerializable) * / protected function __preparationData($arr) { $arr = parent::__preparationData($arr); # Получение массива для вывода # ... Дополнительные настройки return $arr; }/**/ # ... Методы расширения класса }