Download the PHP package jeyroik/extas-foundation without Composer
On this page you can find all versions of the php package jeyroik/extas-foundation. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package extas-foundation
Описание
Данный пакет содержит базовые сущности для Extas`a:
extas\components\Item
Базовый объект, позволяющий использовать из коробки плагины и расширения (см. ниже)extas\components\plugins\Plugin
Плагин. Позволяет реализовывать плагины (подробности см. ниже).extas\components\extensions\Extension
Расширение. Позволяет реализовывать расширения (декораторы) для классов, унаследованных отItem
.
Требования
- PHP 7.4+
- Какое-либо хранилище (для тестов по-умолчанию используется JSON-файл).
Установка пакета
# composer require jeyroik/extas-foundation:6.*
Установка extas-совместимого приложения
# vendor/bin/extas install -t "repo/template/path" -s "repo/classes/save/path"
Для сущностей доступна стадия extas\\interfaces\\stages\\IStageBeforeInstallEntity
, подключившись к которой можно проводить дополнительные манипуляции с данными сущности.
Сушности приложения устанавливаются раньше сущностей библиотек.
# vendor/bin/extas-extra e
Подробнее про команду extra
читайте ниже.
Установка прочих сущностей
Для установки прочих сущностей, доступна команда extra
.
С помощью плагинов есть возможность подключиться к данной команде и через единый интерфейс этой команды устаналивать любые сущности и вообще выполнять любые действия, которые требуется.
Чтобы посмотреть список доступных опций, используйте помощь по команде:
# vendor/bin/extas extra -h
Конфигурация приложения
- Для настройки конфигурации вашего приложения, необходимо создать два файла
extas.app.storage.json
для кофигурации хранилища, плагинов и расширений;extas.app.json
для конфигурации сущностей.- Минимальную конфигурацию можно найти в
extas.app.storage.dist.json
, а также в текущей документации ниже по тексту.extas.app.dist.json
, а также в текущей документации ниже по тексту.
- Если вы разрабатываете бибилиотеку, то настройки для неё необходимо складывать в
extas.storage.json
- конфигурация хранилища, плагинов и расширений.extas.json
- конфигурация сущностей.- Минимальную конфигурацию можно найти в
extas.storage.dist.json
, а также в текущей документации ниже по тексту.extas.dist.json
, а также в текущей документации ниже по тексту.
Запуск тестов
# composer test
Использование
Item
Базовую сущность следует использовать как родителя для ваших сущностей (моделей и т.п.).
class My extends extas\components\Item
В этом случае вы сразу же получаете:
- поддержку динамических свойств:
$my = new My(); $my->some = 'thing';
-
поддержку интерфейса массива:
- поддержку итератора:
foreach($my as $field => $value)
- поддержку декораторов:
$my->notExistingMethod($arg1, $arg2)
- поддержку быстрого доступа к хранилищу:
$my->myTable()->one(...)
- поддержку плагинов (событий): внутри метода класса
My
- создание сущности
<сущность>.created
, срабатывает при сохранении нового экземпляра сущности в хранилище; - инициализация сущности
<сущность>.init
, срабатывает при инициализации объекта сущности; - удаление объекта сущности
<сущность>.after
, срабатывает при удалении объекта сущности - конвертация в массив, строку и целочисленное значение соответственно
<сущность>.to.array
,<сущность>.to.string
,<сущность>.to.int
- создание сущности
- поддержку целого ряда вспомогательных методов (каждый из которых предоставляет соответствующее событие для плагинов) вида
- __toArray()
- __toJson()
- __toInt()
- __equal(IItem $other) - сравнение с другой сущностью.
- __has('attr1', 'attr2', ...) - проверка наличия необходимых атрибутов.
- __select('attr1', 'attr2', ...) - получение сущности с ограниченным набором полей.
- поддержку создания новых событий для плагинов:
Ниже, после рассмотрения каждой базовой сущности, представлен рабочий пример использования всех сущностей вместе и по отдельности.
Плагин
Плагин следует использовать как родителя для ваших плагинов.
Чтобы реализовать плагин, вам необходимо перегрузить метод __invoke()
.
Аргументы метода зависят от конкретной стадии (события).
Пример реализации плагина можно увидеть ниже.
Предустановка плагинов
В extas.app.storage.json
для приложения и в extas.storage.json
для библиотек:
priority
- чем выше приоритет, тем раньше (относительно других плагинов на этой стадии) выполнится плагин. Параметр является необязательным.
Расширение
Расширение следует использовать как родителя для ваших расширений (декораторов). Расширение позволяет динамически прозрачно добавлять методы сущностям, не трогая их код.
Предустановка расширений
В extas.app.storage.json
для приложения и в extas.storage.json
для библиотек:
Пример использования каждой сущности по отдельности и вместе
Item
Плагин
Внимание! Чтобы вышеуказанный пример сработал, плагин должен быть установлен в системе.
Детали см. в разделе Установка
.
Расширение
Внимание! Чтобы вышеуказанный пример сработал, расширение должно быть установлено в системе.
Детали см. в разделе Установка
.
extas.app.storage.json
extas.app.json
Сушности приложения устанавливаются раньше сущностей библиотек.
extas.storage.json
Внимание
: не размещайте в данной конфигурации секцию с настройкой драйверов - она будет игнорироваться.
Драйвера настраиваются в extas.app.storage.json
.
extas.json
ENV
Чтобы узнать какие требуются переменные окружения, выполните команду env
:
Чтобы добавить свои переменные окружения в данный список, добавьте в конфигурации хранилища extas.app.storage.json
(для библиотек в extas.storage.json
) раздел envs
и опишите свои переменные как это показано в примерах соответствующих конфигураций выше.
All versions of extas-foundation with dependencies
jeyroik/extas-base Version 2.*
jeyroik/extas-exceptions Version 0.*
jeyroik/extas-id Version 0.*
ext-json Version *
symfony/finder Version 6.*
symfony/console Version 6.*