snr/plugin

There is no license information available for the latest version (1.0.0) of this package.

Реализует систему типов (плагинов), классы которых помечаются аннотациями или атрибутами (вдохновлено Plugin API Drupal 8)

Installs: 37

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/snr/plugin

1.0.0 2025-09-06 10:17 UTC

This package is auto-updated.

Last update: 2025-12-06 17:58:04 UTC


README

Позволяет разработчикам описывать свои собственные типы бизнес сущностей. Так, можно создать класс, пометить его специальной аннотацией и система "распознает" его как один из типов вашей сущности. Далее с помощью встроенного класса менеджера можно создавать экземпляры этих классов.

Установка

composer require snr/plugin

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

Все примеры смотрите в tests\PluginManagerTest.php

  1. Сначала нужно определить свой "Менеджер плагинов". Создайте класс, наследующий класс DefaultPluginManager, как это сделано в примере - классе TestPluginManager.
  2. Так, в конструкторе TestPluginManager мы передаём базовому классу: папку, где будут классы экземпляров (параметр subdir); класс этих экземпляров (параметр plugin_interface); класс для аннотации (plugin_definition_annotation_name).
  3. Определить папку, где у вас будут находиться классы ваших типов (плагинов). В тестовом примере это папка Plugin. У вас может быть любая другая. Передаётся через параметр 'subdir' конструктора DefaultPluginManager'а.
  4. Создать свой класс аннотации для экземпляров или использовать класс Plugin, который идёт по умолчанию. Передаётся через параметр 'plugin_definition_annotation_name' конструктора DefaultPluginManager'а.
  5. Создать свой интерфейс для экземпляров, примером является интерфейс TestPluginInterface. Передаётся через параметр 'plugin_interface' конструктора DefaultPluginManager'а.
  6. Создать свои классы, каждый из которых описывает один из типов экземпляров. В тестовм примере это класс TestPlugin.
  7. В коде создать экземпляр вашего "Менеджера плагинов". Вызвать его метод createInstance, получив экземпляр нужного вам класса. См. пример в PluginManagerTest.php.