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

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

jeyroik/extas-expands
=====================

Extas expands package

4.0.1(5y ago)01.2k3PHPCI failing

Since Oct 1Pushed 5y ago1 watchersCompare

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

READMEChangelog (10)Dependencies (10)Versions (22)Used By (3)

[![PHP Composer](https://github.com/jeyroik/extas-expands/workflows/PHP%20Composer/badge.svg?branch=master&event=push)](https://github.com/jeyroik/extas-expands/workflows/PHP%20Composer/badge.svg?branch=master&event=push)[![codecov.io](https://camo.githubusercontent.com/e3526f4e5fe4d9ae5549184feac837713be60bf7a135dac35c7b3b7ab416e8be/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d657870616e64732f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://camo.githubusercontent.com/e3526f4e5fe4d9ae5549184feac837713be60bf7a135dac35c7b3b7ab416e8be/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d657870616e64732f636f7665726167652e7376673f6272616e63683d6d6173746572)[![PHPStan Enabled](https://camo.githubusercontent.com/441b5874ce4df0a2defc892979c96c46889b69cb32119d04f0b48626349f8bc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d656e61626c65642d627269676874677265656e2e7376673f7374796c653d666c6174)](https://github.com/phpstan/phpstan)[![](https://camo.githubusercontent.com/5c8a8f13dfcca5a539936cb98046f018ac3c458e6d5c0b91f0999601d12d4472/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f39336432303934373238633635633566326265352f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/jeyroik/extas-expands/maintainability)[![Latest Stable Version](https://camo.githubusercontent.com/fb82061776219f75afc322929e75f9f617f154615c59ff5951dc06ca75b45560/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d657870616e64732f76)](//packagist.org/packages/jeyroik/extas-q-crawlers)[![Total Downloads](https://camo.githubusercontent.com/c13098d3a57377c1644f2fa16944f2ca83a784356226265416e5d1676d79860f/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d657870616e64732f646f776e6c6f616473)](//packagist.org/packages/jeyroik/extas-q-crawlers)[![Dependents](https://camo.githubusercontent.com/076a3e261385c98cdbdf6f8685831bff194f58a14bd05c2d5e52215163b4f87b/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d657870616e64732f646570656e64656e7473)](//packagist.org/packages/jeyroik/extas-q-crawlers)

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

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

Пакет позволяет создавать распаковывающиеся объекты, т.е. примерно такие:

`GET /index``Accept: application/json`Response:

```
{
  "app": {
    "name": "example app",
    "expand": ["app.version", "app.player"]
  }
}
```

`GET /index?expand=app.version,app.player``Accept: application/json`Response:

```
{
  "app": {
    "name": "example app",
    "version": "1.0",
    "player": {
      "name": "root",
      "title": "...",
      "description": "...",
      "expand": ["player.aliases", "player.identities", "player.settings"]
    },
    "expand": ["app.version", "app.player"]
  }
}
```

`GET /index?expand=app.version,app.player,player.aliases``Accept: application/json`Response:

```
{
  "app": {
    "name": "example app",
    "version": "1.0",
    "player": {
      "name": "root",
      "title": "...",
      "description": "...",
      "aliases": ["root", "admin", "authorized"],
      "expand": ["player.aliases", "player.identities", "player.settings"]
    },
    "expand": ["app.version", "app.player"]
  }
}
```

Применение экспандов
====================

[](#применение-экспандов)

```
use extas\components\Item;
use extas\components\expands\Expand;
/**
 * @var Psr\Http\Message\RequestInterface $request
 * @var Psr\Http\Message\ResponseInterface $response
 */
$app = new class([
    'name' => 'example app'
]) extends Item {
    protected function getSubjectForExtension() : string{
        return 'app';
    }
};
$expand = new Expand([
    Expand::FIELD__PSR_REQUEST => $request,
    Expand::FIELD__PSR_RESPONSE => $response,
    Expand::FIELD__ARGUMENTS => [
        Expand::ARG__EXPAND => 'app.version'
    ]
]);
$app = $expand->expand($app);
```

В момент вызова метода `expand` произойдёт запуск двух стадий:

- `extas.expand.parse` : на этой стадии разбирается строка `expand` из аргументов (`Expand::FIELD__ARGUMENTS`).
- `extas.expand.app.version` : на этой стадии происходит сама распаковка.

В extas-совместимой конфигурации:

```
{
  "plugins": [
    {
      "class": "\\PluginAppExpandVersion",
      "stage": "extas.expand.app.version"
    }
  ]
}
```

Результат применения:

```
use extas\components\Item;
use extas\components\expands\Expand;
/**
* @var Psr\Http\Message\RequestInterface $request
* @var Psr\Http\Message\ResponseInterface $response
*/
$app = new class([
   'name' => 'example app'
]) extends Item {
   protected function getSubjectForExtension() : string{
       return 'app';
   }
};
$expand = new Expand([
   Expand::FIELD__PSR_REQUEST => $request,
   Expand::FIELD__PSR_RESPONSE => $response,
   Expand::FIELD__ARGUMENTS => [
       Expand::ARG__EXPAND => 'app.version'
   ]
]);
$app = $expand->expand($app);

print_r($app->__toArray());
```

Результат примерно следующий:

```
Array
(
  "name" => "example app"
  "version" => "1.0"
  "expand" => ["app.version", "app.player"]
)
```

Плагины из коробки
==================

[](#плагины-из-коробки)

Пакет из коробки предоставляет два плагина для парсинга:

- Поддержка вайлдкарда: позволяет использовать экспанды вида `app.*`, которые распакуют всё, что есть для сущности.
- Проверка на пустоту: удаляет пустые элементы экспанда

Чтобы подключить эти плагины, их необходимо импортировать:

`extas.json`

```
{
  "import": {
    "from": {
        "extas/expands": {
          "plugins": "*"
        }
    },
    "parameters": {
        "on_miss_package": {
          "name": "on_miss_package",
          "value": "continue"
        },
        "on_miss_section": {
          "name": "on_miss_section",
          "value": "throw"
        }
    }
  }
}
```

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity67

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

Recently: every ~0 days

Total

20

Last Release

2092d ago

Major Versions

0.2.3 → 1.0.02020-03-06

1.0.5 → 2.0.02020-05-05

2.1.1 → v3.x-dev2020-08-24

3.0.1 → 4.0.02020-08-25

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

---

Tags

expandextasphp

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

PHPackages © 2026

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