rusadrako/model_obj

Модели объектов

0.3.4 2022-02-02 05:21 UTC

This package is not auto-updated.

Last update: 2024-09-25 03:02:50 UTC


README

Модели объектов

Latest Stable Version Total Downloads License

Подключение

Для подключения библиотеки к проекту подключите файл 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;
	}/**/

	# ... Методы расширения класса

}

Методы объекта RD_Obj_List