PHPackages                             jeyroik/extas-installer - 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. jeyroik/extas-installer

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

jeyroik/extas-installer
=======================

Extas installer package

3.6.2(5y ago)02.7k[1 issues](https://github.com/jeyroik/extas-installer/issues)20PHP

Since Nov 29Pushed 3y agoCompare

[ Source](https://github.com/jeyroik/extas-installer)[ Packagist](https://packagist.org/packages/jeyroik/extas-installer)[ RSS](/packages/jeyroik-extas-installer/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (13)Versions (41)Used By (20)

[![tests](https://github.com/jeyroik/extas-installer/workflows/PHP%20Composer/badge.svg?branch=master&event=push)](https://github.com/jeyroik/extas-installer/workflows/PHP%20Composer/badge.svg?branch=master&event=push)[![codecov.io](https://camo.githubusercontent.com/b0c086d04203a755e0b5b24742e417bd6ca737a0cc69047820cecd05c146d9e3/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d696e7374616c6c65722f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://camo.githubusercontent.com/b0c086d04203a755e0b5b24742e417bd6ca737a0cc69047820cecd05c146d9e3/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d696e7374616c6c65722f636f7665726167652e7376673f6272616e63683d6d6173746572)[![](https://camo.githubusercontent.com/37796c6f64dbffa360143ec03ea7f25cb1abaef8162973a113be0a25a9b09f24/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f66653665633430343465393534383430373162352f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/jeyroik/extas-installer/maintainability)[![Latest Stable Version](https://camo.githubusercontent.com/c48d404ba2d67e82a6061215cdd943174267e07467d829aebbd594128f8f1f49/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d696e7374616c6c65722f76)](//packagist.org/packages/jeyroik/extas-jsonrpc)[![Total Downloads](https://camo.githubusercontent.com/60737264adbabd60ac1fa7eb6de774dcf0ebbfbeda23857d64c22bdea6d4efc5/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d696e7374616c6c65722f646f776e6c6f616473)](//packagist.org/packages/jeyroik/extas-jsonrpc)[![Dependents](https://camo.githubusercontent.com/db27d46b7c46c54f76f2e167db9f575a6b876bd417d5681c0040fa520db9b0ff/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d696e7374616c6c65722f646570656e64656e7473)](//packagist.org/packages/jeyroik/extas-jsonrpc)

Описание
========

[](#описание)

Данный пакет позволяет устаналивать совместимые с Extas'ом сущности.

Требования
==========

[](#требования)

- PHP 7.4+
- MongoDB 3+

Установка
=========

[](#установка)

Установка пакета
----------------

[](#установка-пакета)

`# composer require jeyroik/extas-installer:*`

Инициализация Extas'a
---------------------

[](#инициализация-extasa)

`# vendor/bin/extas init`

Эта команда создаст дефолтные контейнеры классов и установит корневые плагины и расширения.

У инициализации имеются следующие стадии (для всех стадий имеются соответствующие интерфейсы):

- `extas.init`: на этой стадии можно провести дополнительные операции по инициализации пакета.
- `extas.init.section`: на этой стадии можно провести дополнительные операции по инициализации секции.
- `extas.init.item`: на этой стадии можно провести дополнительные операции по инициализации конкретного элемента.

После данной операции установлены все минимально-необходимые плагины и расширения. Если необходимо, чтобы плагин/расширение были установлены данной командой, то необходимо в конфигурации плагина/расширения добавить:

- `install_on: initialization`
- Пример:

```
{
  "plugins": [
    {
      "class": "my\\Plugin",
      "stage": "my.stage",
      "install_on": "initialization"
    }
  ]
}
```

Установка сущностей
-------------------

[](#установка-сущностей)

`# vednor/bin/extas install -a my_app` (короткая форма: `extas i -a my_app`)

Установка состоит из двух шагов:

- Сбор конфигураций пакетов.
- Установка найденных пакетов.

Имеется возможность с помощью плагинов подключиться к любому моменту в этих двух шагах (для всех стадий имеются соответствующие интерфейсы), стадии указаны по порядку срабатывания:

- `extas.crawl.packages`: срабатывает после сбора конфигураций.
- `extas.install.`: `` берётся из опции `-a` команды установки.
- `extas.install`: на данном этапе есть возможность подключить собственный установщик для реализации какой-то особенной логики установки пакетов.
- `extas.install.package.`: `` берётся из конфигурации пакета. На данном этапе можно провести дополнительные операции по установки пакета.
- `extas.install.package`: стадия, аналогичная предыдущей.
- `extas.install.section.`: `` - имя секции в конфигурации. На данном этапе можно провести дополнительные операции по установке секции.
- `extas.install.section`: стадия, аналогичная предыдущей.
- `extas.install.section..item`: на данном этапе можно провести дополнительные операции по установке конкретного элемента сущности.
- `extas.install.item`: стадия, аналогичная предыдущей.

Удаление сущностей
------------------

[](#удаление-сущностей)

- `# vendor/bin/extas uninstall` (короткая форма `extas u`)

Для удаления также доступны стадии:

- `extas.uninstall.`
- `extas.uninstall.package.`
- `extas.uninstall.package`
- `extas.uninstall.section.`
- `extas.uninstall.section`
- `extas.uninstall.item.`
- `extas.uninstall.item`

Создание и установка пользовательской сущности
----------------------------------------------

[](#создание-и-установка-пользовательской-сущности)

1. Создаём класс сущности.

```
namespace my\extas;

use extas\components\Item;

class My extends Item
{
    protected function getSubjectForExtension(): string
    {
        return 'my';
    }
}
```

2. Создаём репозиторий для сущности.

Из коробки Extas поддерживает MongoDB.

```
namespace my\extas;

use extas\components\repositories\Repository;

class MyRepository extends Repository
{
    protected string $pk = 'name';
    protected string $itemClass = My::class;
    protected string $scope = 'my';
    protected string $name = 'names';
}
```

В результате использования данного репозитория, будет создана коллекция `my__names`.

3. Придумываем имя секции для нашей сущности в конфигурации.

Пусть будет `my_names`.

4. Создаём плагин для установки нашей сущности.

```
namespace my\extas;

use extas\components\plugins\install\InstallSection;

class PluginInstallMyNames extends InstallSection
{
    protected string $selfSection = 'my_names';
    protected string $selfName = 'my name';
    protected string $selfRepositoryClass = 'myRepository';
    protected string $selfUID = 'name';
    protected string $selfItemClass = My::class;
}
```

5. Добавляем плагин и интерфейс репозитория в нашу конфигурацию для extas'a.

По умолчанию, конфигурация находится в корне в файле с именем `extas.json`. Вы можете использовать любое имя - в этом случае не забудьте указать его в флаге `-p` при установке (см. ниже).

example.json

```
{
    "name": "example",
    "plugins": [
        {"class": "my\\extas\\PluginInstallMyNames", "stage": "extas.install.section.my_names"}
    ],
    "my_names": [
        {"name": "Example 1"},
        {"name": "Example 2"}
    ],
    "package_classes": [
      {"interface": "myRepository", "class": "my\\extas\\MyRepository"}
    ]
}
```

6. Устанавливаем плагин.

`# vendor/bin/extas i`

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity69

Established project with proven stability

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

Recently: every ~196 days

Total

38

Last Release

1297d ago

Major Versions

0.6.0 → 1.0.02020-02-27

1.0.2 → 2.2.102020-03-25

2.5.0 → 3.0.0-alpha2020-06-04

2.5.1 → 3.2.02020-06-11

3.6.2 → v4.x-dev2022-10-20

### Community

Maintainers

![](https://www.gravatar.com/avatar/2aaec5c4bade6ab2b5d1a0f7d97ab4e0ff2ce83937f76499b2888ad16cde5e04?d=identicon)[jeyroik](/maintainers/jeyroik)

---

Top Contributors

[![jeyroik](https://avatars.githubusercontent.com/u/6348124?v=4)](https://github.com/jeyroik "jeyroik (245 commits)")

---

Tags

extasphp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jeyroik-extas-installer/health.svg)

```
[![Health](https://phpackages.com/badges/jeyroik-extas-installer/health.svg)](https://phpackages.com/packages/jeyroik-extas-installer)
```

###  Alternatives

[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M565](/packages/symfony-maker-bundle)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

96374.6k23](/packages/friendsoftypo3-content-blocks)[shyim/danger-php

Port of danger to PHP

8544.9k](/packages/shyim-danger-php)[php-soap/wsdl

Deals with WSDLs

173.5M12](/packages/php-soap-wsdl)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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