pribolshoy/yii2-repository

Public library

Installs: 10

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/pribolshoy/yii2-repository

v0.0.0.1 2024-03-01 16:00 UTC

This package is not auto-updated.

Last update: 2026-01-29 17:05:32 UTC


README

Библиотека для реализации паттерна Repository в Yii2 приложениях. Адаптация пакета pribolshoy/repository для работы с Yii2 ActiveRecord.

Установка

composer require pribolshoy/yii2-repository

Требования

  • PHP >= 7.4
  • Yii2 >= 2.0
  • Пакет pribolshoy/repository

Основные компоненты

AbstractARRepository

Абстрактный класс для создания репозиториев, работающих с ActiveRecord моделями.

Пример использования:

<?php

namespace app\repositories;

use pribolshoy\yii2repository\repositories\AbstractARRepository;
use app\models\User;

class UserRepository extends AbstractARRepository
{
    protected ?string $model_class = User::class;

    protected function defaultFilter()
    {
        $this->addFilterValueByParams('status', 'active');
        $this->addFilterValueByParams('limit', 25);
        $this->addFilterValueByParams('page', 1);
    }

    protected function addQueries()
    {
        if ($this->existsFilter('status')) {
            $this->getQueryBuilder()->andWhere(['status' => $this->getFilter('status')]);
        }

        if ($this->existsFilter('email')) {
            $this->getQueryBuilder()->andWhere(['like', 'email', $this->getFilter('email')]);
        }

        return $this;
    }
}

AbstractARService

Абстрактный класс для создания сервисов, работающих с репозиториями.

Пример использования:

<?php

namespace app\services;

use pribolshoy\yii2repository\services\AbstractARService;
use app\repositories\UserRepository;

class UserService extends AbstractARService
{
    protected ?string $repository_class = UserRepository::class;

    protected function init()
    {
        // Инициализация сервиса
    }
}

Драйверы кеша

Библиотека поддерживает несколько драйверов кеша:

RedisDriver

Использует Redis для кеширования данных.

protected ?string $driver = 'redis';
protected ?string $driver_path = "\\pribolshoy\\yii2repository\\drivers\\";

FileDriver

Использует файловый кеш Yii2.

protected ?string $driver = 'file';
protected ?string $driver_path = "\\pribolshoy\\yii2repository\\drivers\\";

MysqlDriver

Использует MySQL таблицу для кеширования.

protected ?string $driver = 'mysql';
protected ?string $driver_path = "\\pribolshoy\\yii2repository\\drivers\\";

Использование

Создание репозитория

$repository = new UserRepository([
    'status' => 'active',
    'limit' => 10,
    'page' => 1
]);

$users = $repository->search();

Работа с сервисом

$service = new UserService();
$items = $service->getItems();

Особенности

  • Поддержка пагинации через Yii2 Pagination
  • Кеширование результатов запросов
  • Гибкая система фильтрации
  • Поддержка сортировки
  • Работа с ActiveRecord моделями

Лицензия

BSD-3-Clause

Автор

Nikolay Pribolshoy pribolshoy@gmail.com