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

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

jeyroik/extas-patterns
======================

Extas patterns package

1.0.2(6y ago)022PHP

Since Jul 22Pushed 6y agoCompare

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

READMEChangelog (4)Dependencies (1)Versions (5)Used By (0)

patterns
========

[](#patterns)

Данный пакет позволяет использовать функционал паттернов для Extas-совместимого проекта.

Паттерн - это аналог мапера данных.

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

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

`composer require jeyroik/extas-patterns:*`

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

[](#использование)

Идея использования паттернов заключается в создании расширения для конкретного плагина.

Допустим, имеем массив

```
$data = [
    'level1' => [
        'level2' => [
            'level3' => 'enough'
        ],
        'level2.1' => 'stop'
    ],
    'level1.1' => 'break'
];
```

Создаём расширение
------------------

[](#создаём-расширение)

### Сначала интерфейс

[](#сначала-интерфейс)

```
namespace my\extas\interafces\extensions;

interface ILevelsPatternExtension
{
    public function getLevel1(): array;
    public function getLevel1_1(): string;
    public function getLevel2(): array;
    public function getLevel2_1(): string;
    public function getLevel3(): string;
}
```

### Теперь само расширение

[](#теперь-само-расширение)

```
namespace my\extas\components\extensions;

use extas\components\extensions\Extension;
use extas\interfaces\patterns\IPattern;

class LevelsPatternExtension extends Extension implements ILevelsPatternExtension
{
    public function getLevel1(IPattern $pattern = null)
    {
        $schema = $pattern->getImportedData();
        return $schema['level1'] ?? [];
    }

    public function getLevel1_1(IPattern $pattern)
    {
        $schema = $pattern->getImportedData();
        return $schema['level1.1'] ?? '';
    }

    public function getLevel2(IPattern $pattern = null)
    {
        $level1 = $this->getLevel1($pattern);
        return $level1['level2'] ?? [];
    }

    public function getLevel2_1(IPattern $pattern = null)
    {
        $level1 = $this->getLevel1($pattern);
        return $level1['level2.1'] ?? '';
    }

    public function getLevel3(IPattern $pattern = null)
    {
        $level2 = $this->getLevel2($pattern);
        return $level2['level3'] ?? '';
    }
}
```

Добавляем расширение в пакет extas'a:
-------------------------------------

[](#добавляем-расширение-в-пакет-extasa)

`subject` = `extas.pattern.`

```
{
  "extensions": [
    {
      "interface": "my\\extas\\interfaces\\extensions\\ILevelsPatternExtension",
      "class": "my\\extas\\components\\extensions\\ILevelsPatternExtension",
      "subject": "extas.pattern.levels",
      "methods": [
        "getLevel1",
        "getLevel1_1",
        "getLevel2",
        "getLevel2_1",
        "getLevel3"
      ]
    }
  ]
}
```

Устанавливаем паттерн и расширение:
-----------------------------------

[](#устанавливаем-паттерн-и-расширение)

`/vendor/bin/extas i -p extas.json -s 0 -r 1`

Применяем паттерн
-----------------

[](#применяем-паттерн)

```
use \extas\components\patterns\Pattern;

$data = [
    'level1' => [
        'level2' => [
            'level3' => 'enough'
        ],
        'level2.1' => 'stop'
    ],
    'level1.1' => 'break'
];

$pattern = new Pattern([Pattern::FIELD__NAME => 'levels', Pattern::FIELD__SCHEMA => $data]);
echo $pattern->getLevel3(); // 'enough'
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity62

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

Total

4

Last Release

2240d ago

Major Versions

0.1.2 → 1.0.02020-03-13

### 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 (4 commits)")

---

Tags

extaspatternsphp

### Embed Badge

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

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

PHPackages © 2026

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