PHPackages                             devatmaliance/repository - 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. [Database &amp; ORM](/categories/database)
4. /
5. devatmaliance/repository

ActiveLibrary[Database &amp; ORM](/categories/database)

devatmaliance/repository
========================

v3.12(7mo ago)0136PHPPHP &gt;=7.4

Since Feb 22Pushed 7mo ago1 watchersCompare

[ Source](https://github.com/devatmaliance/repository)[ Packagist](https://packagist.org/packages/devatmaliance/repository)[ RSS](/packages/devatmaliance-repository/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (48)Used By (0)

repository
==========

[](#repository)

Repository для испоьзования общего интерфейса для добавления, обновления и удаления записей из Мастера

Приминение RepositoryService
============================

[](#приминение-repositoryservice)

1. Создаем

$service = new RepositoryService( $this-&gt;request-&gt;rawBody, new RepositoryYii, new ActionReceiverDTO, new RepositoryEntity, new ServiceReceiverMapperDTO )

2. $this-&gt;request-&gt;rawBody = json new RepositoryYii - класс, который совершает все необходимые действия для синхроннизации create, update, delete 3 самых важных момента для понимания работы с данным классом

    - public const SCENARIO = 'master\_model\_changes';
    - private ActionDTOInterface $actionDTO;
    - private RepositoryEntityInterface $repositoryEntity;

SCENARIO = 'master\_model\_changes' - используется для того, чтобы не срабатывало поведение, которое может уже быть привязано к одной из модели, поведение отправляет по апи запрос на добавление, изменение или удалении записи из таблицы, если данный функционал используется через формы или консоль.

private ActionDTOInterface $actionDTO;

это наша ДТО, которая заполняется при получении json файла также передается в initDTO, вторым параметром ServiceReceiverMapperDTOInterface, который служит для маппинга полей под нашу модель.

Пример:

$this-&gt;actionDTO-&gt;initDTO($this-&gt;body, $this-&gt;mapperDTO);

Класс Entity
============

[](#класс-entity)

- библотечный класс, в котором перечислены все модели на текущий момент, чтобы мы могли использовать их в entity при передаче в json и обработке в микросервисе. Тут мы перечисляем все ДТО по которым нам необходимо менять поля с мастера таблиц на свои, если не указать, то будут использоваться поля по умолчанию

class ServiceReceiverMapperDTO implements ServiceReceiverMapperDTOInterface {

```
public function mapDtos(): array
{
   return [
        Entity::DEVICE => DeviceDTO::class
    ];
}

public function getMapDto(string $entity): array
{
    $dto = $this->mapDtos()[$entity] ?? [];
    return $dto ? ['fields' => $dto] : [];
}

```

}

public function initDTO(\\stdClass $source, ?ServiceReceiverMapperDTOInterface $mapperDTO): void { $dtoMap = isset($source-&gt;entity) ? $mapperDTO-&gt;getMapDto($source-&gt;entity) : \[\]; $this-&gt;loadSource($source, $dtoMap);

```
    if (!$this->validate()) {
        throw new ModelNotValidateException($this);
    }
}

```

private RepositoryEntityInterface $repositoryEntity - тут мы заполняем массив Entity =&gt; Model, с которыми наш микросервис будет работать. Например: мы только синхронизируем с двумя сущностями и относим их к нащим моделям в сервисе, для выполнения операций уже с ними.

class RepositoryEntity implements RepositoryEntityInterface {

```
public function entities(): array
{
    return [
        Entity::DEVICE => new Device(),
        Entity::FILTERS => new Filters(),
    ];
}

```

}

3. $repositoryService-&gt;execute() - и вызываем фунцию, происходит запись в нашу базу и возвращает массив с полями модели.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance65

Regular maintenance activity

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

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 ~13 days

Recently: every ~142 days

Total

47

Last Release

215d ago

Major Versions

v1.9 → v2.02024-02-28

v2.9.9 → v3.0.12024-03-12

### Community

Maintainers

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

---

Top Contributors

[![devatmaliance](https://avatars.githubusercontent.com/u/94893319?v=4)](https://github.com/devatmaliance "devatmaliance (58 commits)")

### Embed Badge

![Health badge](/badges/devatmaliance-repository/health.svg)

```
[![Health](https://phpackages.com/badges/devatmaliance-repository/health.svg)](https://phpackages.com/packages/devatmaliance-repository)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.4k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M546](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

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