PHPackages                             rusadrako/model\_obj - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rusadrako/model\_obj

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

rusadrako/model\_obj
====================

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

0.3.5(1y ago)090MITPHPPHP &gt;=7.0.0

Since Mar 19Pushed 1y ago1 watchersCompare

[ Source](https://github.com/RusaDrako/model_obj)[ Packagist](https://packagist.org/packages/rusadrako/model_obj)[ RSS](/packages/rusadrako-model-obj/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (1)Versions (16)Used By (0)

RusaDrako\\model\_obj
=====================

[](#rusadrakomodel_obj)

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

[![Latest Stable Version](https://camo.githubusercontent.com/f490a20965d1c3cacf0ae315bc12fca8506404ad2beb2d6151356a9019b65287/68747470733a2f2f706f7365722e707567782e6f72672f727573616472616b6f2f6d6f64656c5f6f626a2f762f737461626c65)](https://packagist.org/packages/rusadrako/model_obj)[![Total Downloads](https://camo.githubusercontent.com/d09cb8ab20b05be6e869b08266ccbb4cf35356f43facaa7f63c62caca3a7cdd6/68747470733a2f2f706f7365722e707567782e6f72672f727573616472616b6f2f6d6f64656c5f6f626a2f646f776e6c6f616473)](https://packagist.org/packages/rusadrako/model_obj/stats)[![License](https://camo.githubusercontent.com/79054cd46fbc7a50fba48569f6fbfe90e272f0afb7b8bc99790cfa9f756a2ecc/68747470733a2f2f706f7365722e707567782e6f72672f727573616472616b6f2f6d6f64656c5f6f626a2f6c6963656e7365)](./LICENSE)

Подключение
-----------

[](#подключение)

Для подключения библиотеки к проекту подключите файл `src/autoload.php`

Доступные классы
----------------

[](#доступные-классы)

ПсевдонимПолное имя классаRD\_Obj\_FactoryRusaDrako\\model\_obj\\factoryRD\_Obj\_DataRusaDrako\\model\_obj\\data\_queryRD\_Obj\_Data\_CoreRusaDrako\\model\_obj\\dataRD\_Obj\_ListRusaDrako\\model\_obj\\object\_listRD\_Obj\_ItemRusaDrako\\model\_obj\\object\_itemНачало работы
-------------

[](#начало-работы)

```
	$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
-------------------------------

[](#настройка-объекта-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_data)

МетодДоступОписаниеselect(*string* $sql)publicВозвращает объект со списком объектов записей из запросаinsert($arr\_data)publicДобавляет записьupdate($arr\_data, $id)publicОбновляет записьreplace\_column($sql)protectedОбновляет запроса - замена маркеровnewItem()publicСоздаёт новый объектgetByKey(int $id)publicВозвращает запись по idgetByKeyOrNew(int $id)publicВозвращает запись по id или новый элементgetByKeyArray(arr $arr\_id)publicВозвращает список записей по массиву idgetAll()publicВозвращает все записиНастройка объекта RD\_Obj\_Item
-------------------------------

[](#настройка-объекта-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

[](#методы-объекта-rd_obj_data-1)

#### trait\_\_data\_\_set

[](#trait__data__set)

МетодДоступОписаниеset\_column\_id($name)protectedЗадаёт имя ключевого поляset\_column\_name($name, $alias = null)protectedЗадаёт имя и псевдоним поляset\_gen\_data($name, $func)protectedЗадаёт связанную со свойством функциюset\_sub\_obj($name, $obj)protectedЗадаёт связанный со свойством объект#### trait\_\_data\_preparation

[](#trait__data_preparation)

МетодДоступОписание\_\_preparationData($arr)protectedПодготовка данных к var\_dump() и серилизации JSON (JsonSerializable)#### trait\_\_data

[](#trait__data)

МетодДоступОписаниеgetKey()publicВозвращает ключ элементаgetKeyName()publicВозвращает имя ключевого поляgetProp(*string* $name)publicВозвращает значение свойстваsetProp(*string* $name, $value)publicЗадаёт значение свойстваfilter(*string* $name, $value)protectedФильтр обновления данных#### trait\_\_link\_obj

[](#trait__link_obj)

МетодДоступОписаниеcleanLinkObj($name)publicОчищает присоединённый объектgetLinkObj($name)publicВозвращает присоединённый объектsetLinkObj($name, $value)publicДобавляет объект как элементsetLinkObjArr($name, $value)publicДобавляет объект как элемент массива#### trait\_\_data\_\_db

[](#trait__data__db)

МетодДоступОписаниеsetDataArrDB(*array* $arr\_data)publicПрисваевает свойства из массива (Данные из БД)getDBColumnList(*int* $id)publicВозвращает список столбцовsave()publicСохраняет элементНастройка объекта RD\_Obj\_List
-------------------------------

[](#настройка-объекта-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

[](#методы-объекта-rd_obj_list)

МетодДоступОписаниеadd(*\\RusaDrako\\model\_obj\\object\_item* $item)publicДобавляет элемент в списокitem(*int* $num)publicВозвращает указанный элементfirst()publicВозвращает первый элементlast()publicВозвращает последний элементiterator()publicОсуществляет перебор элементовget\_array()publicВозвращает массив входящих объектовaddList(*\\RusaDrako\\model\_obj\\object\_list* $list)publicОсуществляет добавление элементов из переданного спискаcount()publicВозвращает число элементов

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance43

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~102 days

Recently: every ~330 days

Total

15

Last Release

447d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/dfa89c28184b3c77d819628f24225e78de8e969601e1ff1066a5f4bf5b46491d?d=identicon)[RusaDrako](/maintainers/RusaDrako)

---

Top Contributors

[![RusaDrako](https://avatars.githubusercontent.com/u/32844979?v=4)](https://github.com/RusaDrako "RusaDrako (48 commits)")

### Embed Badge

![Health badge](/badges/rusadrako-model-obj/health.svg)

```
[![Health](https://phpackages.com/badges/rusadrako-model-obj/health.svg)](https://phpackages.com/packages/rusadrako-model-obj)
```

###  Alternatives

[christophrumpel/laravel-factories-reloaded

This package sits on top of Laravel factories and provides you with dedicated factory classes for every model.

38147.7k](/packages/christophrumpel-laravel-factories-reloaded)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
