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

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

jeyroik/extas-terms
===================

Provides terms models

0.2.0(5y ago)0992PHP

Since Sep 10Pushed 5y ago1 watchersCompare

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

READMEChangelog (2)Dependencies (9)Versions (4)Used By (2)

[![tests](https://github.com/jeyroik/extas-terms/workflows/PHP%20Composer/badge.svg?branch=master&event=push)](https://github.com/jeyroik/extas-terms/workflows/PHP%20Composer/badge.svg?branch=master&event=push)[![codecov.io](https://camo.githubusercontent.com/53800dea98a6885d22b57944efef332e465cba6e8d6f9d6e2ea4114f599986ae/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d7465726d732f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://camo.githubusercontent.com/53800dea98a6885d22b57944efef332e465cba6e8d6f9d6e2ea4114f599986ae/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d7465726d732f636f7665726167652e7376673f6272616e63683d6d6173746572)[![PHPStan Enabled](https://camo.githubusercontent.com/441b5874ce4df0a2defc892979c96c46889b69cb32119d04f0b48626349f8bc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d656e61626c65642d627269676874677265656e2e7376673f7374796c653d666c6174)](https://github.com/phpstan/phpstan)

[![Latest Stable Version](https://camo.githubusercontent.com/5f5f66897973a422dd85dd55e42a78e31e054204e4d16901702512bac28f3593/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d7465726d732f76)](//packagist.org/packages/jeyroik/extas-q-crawlers)[![Total Downloads](https://camo.githubusercontent.com/97d5917ca6dd1ef3b6561b47c6288d430ed5d95ffc119a2d5c29b488177d4049/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d7465726d732f646f776e6c6f616473)](//packagist.org/packages/jeyroik/extas-q-crawlers)[![Dependents](https://camo.githubusercontent.com/30a8e947fc57d3d79a5b4344c843fccff523886bd2f47a24ed05e3a33e0b8f17/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d7465726d732f646570656e64656e7473)](//packagist.org/packages/jeyroik/extas-q-crawlers)

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

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

Пакет предоставляет модель для работы с термами (слагаемыми).

Терм - именованный вычисляемый параметр.

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

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

Получаем список термов:

```
use \extas\interfaces\terms\ITerm;
$terms = $this->terms()->all([ITerm::FIELD__TAGS => 'some.tag']);
```

Получаем список калькуляторов:

```
use extas\interfaces\terms\ITermCalculatorDescription;
$calculators = $this->termsCalculators()->all();
```

Вычисляем термы:

```
use extas\interfaces\terms\ITerm;
use extas\interfaces\terms\ITermCalculatorDescription;
use extas\interfaces\terms\ITermCalculationResult;
use extas\interfaces\terms\ITermCalculator;

/**
 * @var ITerm[] $terms
 * @var ITermCalculatorDescription[] $calculators
 */

$calculated = [];

foreach ($calculators as $calculatorDescription) {
    /**
     * @var ITermCalculationResult $result
     * @var ITermCalculator $calculator
     */
    $calculator = $calculatorDescription->buildClassWithParameters([]);
    $result = $calculator->calculateTerms($terms, ['some' => 'args']);

    /**
     * Or you can just
     * $result = $calculatorDescription->runWithParameters([], 'calculateTerms', $terms);
     */

    /**
     * You should iterate terms if you need to pass different arguments to each of them:
     * foreach($terms as $terms) {
     *      if ($calculator->canCalculate($term, ['some1' => 'arg1'])) {
     *          $calculated[] = $calculator->calculateTerm($term, ['some1' => 'arg1']);
     *      }
     * }
     */

    $calculated = array_merge($calculated, $result->getCalculatedTerms());
    $terms = array_column($result->getSkippedTerms(), ITermCalculationResult::SKIPPED__TERM);

    if (empty($terms)) {
        break;
    }
}
```

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

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

Total

3

Last Release

2057d ago

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

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

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

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

PHPackages © 2026

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