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

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

jeyroik/extas-grades
====================

Provides grades logic

0.2.0(5y ago)06PHP

Since Sep 11Pushed 5y ago1 watchersCompare

[ Source](https://github.com/jeyroik/extas-grades)[ Packagist](https://packagist.org/packages/jeyroik/extas-grades)[ RSS](/packages/jeyroik-extas-grades/feed)WikiDiscussions master Synced yesterday

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

[![tests](https://github.com/jeyroik/extas-grades/workflows/PHP%20Composer/badge.svg?branch=master&event=push)](https://github.com/jeyroik/extas-grades/workflows/PHP%20Composer/badge.svg?branch=master&event=push)[![codecov.io](https://camo.githubusercontent.com/43f3af523cd8f0d481a83a49f8da64eb30bcd90d3b14daa77ee443b3a487730a/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d6772616465732f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://camo.githubusercontent.com/43f3af523cd8f0d481a83a49f8da64eb30bcd90d3b14daa77ee443b3a487730a/68747470733a2f2f636f6465636f762e696f2f67682f6a6579726f696b2f65787461732d6772616465732f636f7665726167652e7376673f6272616e63683d6d6173746572)[![PHPStan Enabled](https://camo.githubusercontent.com/441b5874ce4df0a2defc892979c96c46889b69cb32119d04f0b48626349f8bc9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d656e61626c65642d627269676874677265656e2e7376673f7374796c653d666c6174)](https://github.com/phpstan/phpstan)[![](https://camo.githubusercontent.com/89059c04c8026d28a3cd297da541d952a6011d35586abeb3eaef249c28f8c14a/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f62643362336562393634616339653438366236302f6d61696e7461696e6162696c697479)](https://codeclimate.com/github/jeyroik/extas-grades/maintainability)[![Latest Stable Version](https://camo.githubusercontent.com/dc851569a4be4882240fbdf2a278cd02ca229471b3d8bdf618a51a8156f3c226/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d6772616465732f76)](//packagist.org/packages/jeyroik/extas-q-crawlers)[![Total Downloads](https://camo.githubusercontent.com/f0d72e439a8342b1d950e904c1e436fad24a21ea9a1d9c07935f0be24fd97620/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d6772616465732f646f776e6c6f616473)](//packagist.org/packages/jeyroik/extas-q-crawlers)[![Dependents](https://camo.githubusercontent.com/3fbbf5099ff47568fb725f38654649c81598c203abd98ebb58d49bcdbaa0f33d/68747470733a2f2f706f7365722e707567782e6f72672f6a6579726f696b2f65787461732d6772616465732f646570656e64656e7473)](//packagist.org/packages/jeyroik/extas-q-crawlers)

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

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

Пакет позволяет организовать вычисление любых составных параметров - оценок.

- `Оценка` - это параметр, который высчитывается на основании каких-либо коэффициентов.
- `Коэффициент` - это параметр, который вычисляется на основании простых слагаемых. Не рекомендуется рассчитывать коэффициент на основании других коэффициентов - для этого есть оценки.
- `Слагаемое` - это простой параметр, который либо имеет статическое значение, либо вычисляется бес использования других слагаемых/коэффициентов/оценок.

Все три сущности имеют единый интерфейс, что позволяет организовать их размещение любым удобным образом.

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

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

Пакет предоставляет несколько плагинов по-умолчанию для запуска расчётов термов (слагаемых), коэффициентов и оценок.

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

`extas.json`

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

Инициализация и установка extas'a:

`# vendor/bin/extas init``# vendor/bin/extas install`

Запуск тестов:

`# composer test`

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

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

1. Создайте (или установите) термы (слагаемые). 1.1. Создайте (или установите) калькуляторы термов.
2. Создайте (или установите) коэффициенты. 2.1. Создайте (или установите) калькуляторы коэффициентов.
3. Создайте (или установите) грейды (оценки). 3.1. Создайте (или установите) калькуляторы грейдов.
4. `# php -S 0.0.0.0:8080 -t vendor/jeyroik/extas-api/public`
5. `# curl localhost:8080/api/jsonrpc -d '{"method":"grade.calculate", "params": {"names":["grade1"], "tag":"some.tag"}}'`

В результате выполнения запроса будет выполнен расчёт оценки `grade1`.

Ответ будет примерно следующим:

```
{
  "id": "",
  "jsonrpc": "2.0",
  "result": {
    "grades": {
        "grade1": {
          "": ""
        }
    }
  }
}
```

Использование со стандартными плагинами
=======================================

[](#использование-со-стандартными-плагинами)

Стандартные плагины ориентируются на теги термов, а именно:

- `grade.term.*`, `grade.term.` - теги для термов (слагаемых).
- `grade.coefficient.*`, `grade.coefficient.` - теги для коэффициентов.
- `grade.self.*`, `grade.self.` - теги для грейдов (оценок).

Учитывая эту информацию, пройдите шаги из инструкции выше.

Использование вайлдкарда
------------------------

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

"Плагины по-умолчанию" предоставляют возможность использования общего вайлдкарда для тегов - `*`.

Данный нюанс позволяет "протаскивать" в ответ значение любых слагаемых и коэффициентов, если это требуется.

Допустим, есть терм с именем `term1`, для которого вычислено значение `public` и который имеет тег `*`.

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

```
{
  "id": "",
  "jsonrpc": "2.0",
  "result": {
    "grades": {
        "grade1": {
          "": "",
          "term1": "public"
        }
    }
  }
}
```

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

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

Total

3

Last Release

2048d 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 (7 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

PHPackages © 2026

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