PHPackages                             masterweber/morpher-ws3-php-client - 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. masterweber/morpher-ws3-php-client

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

masterweber/morpher-ws3-php-client
==================================

PHP-клиент веб-сервиса "Морфер" 3.0

v0.3.1(5y ago)1691MITPHPPHP &gt;=7.4

Since Mar 13Pushed 4y ago1 watchersCompare

[ Source](https://github.com/masterWeber/morpher-ws3-php-client)[ Packagist](https://packagist.org/packages/masterweber/morpher-ws3-php-client)[ Docs](https://github.com/masterWeber/morpher-ws3-php-client#readme)[ RSS](/packages/masterweber-morpher-ws3-php-client/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (5)Dependencies (3)Versions (6)Used By (0)

morpher-ws3-php-client
======================

[](#morpher-ws3-php-client)

PHP-клиент веб-сервиса "Морфер" 3.0

[![GitHub Workflow Status](https://camo.githubusercontent.com/1ccd2e09fc1cdc8d4d3dcb6adeb7ded50020af398e16e61215c939df3bf97d0d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6d617374657257656265722f6d6f72706865722d7773332d7068702d636c69656e742f504850253230436f6d706f736572)](https://camo.githubusercontent.com/1ccd2e09fc1cdc8d4d3dcb6adeb7ded50020af398e16e61215c939df3bf97d0d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6d617374657257656265722f6d6f72706865722d7773332d7068702d636c69656e742f504850253230436f6d706f736572)[![GitHub release (latest by date)](https://camo.githubusercontent.com/c4b5ed3da85a9b7ea595d46efef0b110c4b019a4743e3eddd88bc969fbc76f5a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6d617374657257656265722f6d6f72706865722d7773332d7068702d636c69656e74)](https://camo.githubusercontent.com/c4b5ed3da85a9b7ea595d46efef0b110c4b019a4743e3eddd88bc969fbc76f5a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6d617374657257656265722f6d6f72706865722d7773332d7068702d636c69656e74)[![Packagist Downloads](https://camo.githubusercontent.com/c3b43c63f6b17013274c6c3091a7d3fc057d082f8c893e87c66ee055106b37a2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d617374657277656265722f6d6f72706865722d7773332d7068702d636c69656e74)](https://camo.githubusercontent.com/c3b43c63f6b17013274c6c3091a7d3fc057d082f8c893e87c66ee055106b37a2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d617374657277656265722f6d6f72706865722d7773332d7068702d636c69656e74)[![GitHub](https://camo.githubusercontent.com/5535709d9e2b3318ce50d94c2b78fcfaedda5ce74f063043dccbdc55f4cc5601/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617374657257656265722f6d6f72706865722d7773332d7068702d636c69656e74)](https://camo.githubusercontent.com/5535709d9e2b3318ce50d94c2b78fcfaedda5ce74f063043dccbdc55f4cc5601/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617374657257656265722f6d6f72706865722d7773332d7068702d636c69656e74)

### Библиотека реализует следующие функции

[](#библиотека-реализует-следующие-функции)

(с помощью веб-сервиса ["Морфер 3.0"](https://morpher.ru/ws3/))

#### На русском языке:

[](#на-русском-языке)

- [Склонение по падежам](#russian-declension);
- [Выделение в строке фамилии, имени и отчества](#russian-full-name);
- [Пропись чисел и склонение единицы измерения](#russian-spell) (3 новых письма, 10 комментариев);
- [Пропись чисел в виде порядковых числительных](#russian-spell-ordinal) («сто первый километр»);
- [Пропись дат в любом падеже](#russian-spell-date) («пятого мая две тысячи первого года»);
- [Склонение прилагательных по родам](#russian-adjective-genders);
- [Образование прилагательных от названий городов и стран](#russian-adjectivize);
- [Расстановка ударений в текстах](#add-stress-marks).

#### На украинском языке:

[](#на-украинском-языке)

- [Склонение по падежам](#ukrainian-declension);
- [Пропись чисел и склонение единицы измерения](#ukrainian-spell) (3 рубля, 10 коментарів).

#### На казахском языке:

[](#на-казахском-языке)

- [Склонение по падежам, числам и лицам](#qazaq-declension).

#### Общие:

[](#общие)

- [Остаток запросов на данный момент](#get-queries-left).

### Пользовательский словарь

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

Веб-сервис поддерживает исправление склонения по требованию пользователя. Для этого имеются 3 метода:

- [Получить список всех добавленных исправлений](#userdict-get);
- [Добавить или изменить исправление](#userdict-post);
- [Удалить исправление](#userdict-delete).

Веб-сервис ["Морфер 3.0"](https://morpher.ru/ws3/)предусматривает [бесплатное (с ограничениями)](https://morpher.ru/ws3/#limitations)и [платное](https://morpher.ru/ws3/buy/) использование. Подробнее смотрите на [сайте проекта](https://morpher.ru).

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

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

```
composer require masterweber/morpher-ws3-php-client
```

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

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

```
use Morpher\Morpher;

$morpher = new Morpher(
    'https://localhost', // по умолчанию https://ws3.morpher.ru
    'YOUR_TOKEN',        // по умолчанию null
    1.0                  // по умолчанию 3.0 сек
);
```

Можно вызвать конструктор без аргументов, в этом случае будут использоваться параметры по умолчанию.

```
use Morpher\Morpher;

$morpher = new Morpher();
```

### Склонение по падежам на русском языке

[](#склонение-по-падежам-на-русском-языке)

Для склонения слов и словосочетаний используется метод `russian->declension(string $phrase, string ...$flags)`:

```
$result = $morpher->russian->declension('Программист');

echo $result->genitive;         // Программиста
echo $result->plural->genitive; // Программистов
```

`$result` — объект `DeclensionResult` со следующими свойствами:

- `nominative` — текст в именительном падеже;
- `genitive` — текст в родительном падеже;
- `dative` — текст в дательном падеже;
- `accusative` — текст в винительном падеже;
- `instrumental` — текст в творительном падеже;
- `prepositional` — текст в предложном падеже;
- `plural` — объект со свойствами-падежами для текста во множественном числе.

При использовании платного аккаунта на сервисе, определяются дополнительные свойства:

- `prepositional_O` — предложный падеж с предлогом О/ОБ/ОБО, предлог выбирается автоматически;
- `gender` — род (мужской, женский или средний);
- `where`, `locative` — в местном падеже (локатив) с предлогом;
- `where_to` — в направительном падеже (аллатив) с предлогом;
- `where_from`, `whence` — в исходном падеже (аблатив) с предлогом.

#### Флаги для разрешения неоднозначностей

[](#флаги-для-разрешения-неоднозначностей)

Есть слова, которые могут склоняться по-разному, например:

- фамилия Резник склоняется у мужчин и не склоняется у женщин;
- Ростов в творительном падеже будет Ростовым, если это фамилия, и Ростовом, если это город;
- тестер в винительном падеже будет тестера, если это человек, и тестер, если имеется в виду прибор.

Для повышения качества склонения вы можете сообщить веб-сервису дополнительную информацию через флаги. Несколько флагов можно передать через запятую:

```
use Morpher\Russian\RussianClient;

$result = $morpher->russian->declension(
    'Слепов Сергей Николаевич',
    RussianClient::FLAG_NAME,
    RussianClient::FLAG_MASCULINE
);

echo $result->genitive;       // Слепова Сергея Николаевича
echo $result->fullName->name; // Сергей
```

Флаги поддерживаемые для `russian->declension(string $phrase, string ...$flags)`:

- RussianClient::FLAG\_FEMININE — Женский род;
- RussianClient::FLAG\_MASCULINE — Мужской род;
- RussianClient::FLAG\_ANIMATE — Одушевлённое;
- RussianClient::FLAG\_INANIMATE — Неодушевлённое;
- RussianClient::FLAG\_COMMON — Нарицательное;
- RussianClient::FLAG\_NAME — ФИО.

### Выделение в строке фамилии, имени и отчества

[](#выделение-в-строке-фамилии-имени-и-отчества)

Если входная строка распознана как ФИО, то объект `DeclensionResult` будет содержать разбивку строки на фамилию, имя и отчество:

- `genitive` — ФИО в родительном падеже;
- `dative` — ФИО в дательном падеже;
- `accusative` — ФИО в винительном падеже;
- `instrumental` — ФИО в творительном падеже;
- `prepositional` — ФИО в предложном падеже;
- `name` — Имя в именительном падеже;
- `surname` — Фамилия в именительном падеже;
- `patronymic` — Отчество в именительном падеже.

### Пропись чисел и согласование с числом

[](#пропись-чисел-и-согласование-с-числом)

Метод `russian->spell(int $number, string $unit)` решает задачу получения прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующем числом (1 попугай, 2 попугая, 5 попугаев):

```
$result = $morpher->russian->spell(235, 'рубль');

echo $result->n->genitive;    // двухсот тридцати пяти
echo $result->unit->genitive; // рублей
```

Комбинируя соответствующие падежные формы n и unit, можно получить вывод «суммы прописью» на любой вкус:

- 235 рублей
- Двести тридцать пять рублей
- 235 (двести тридцать пять) рублей и т.п.

### Пропись чисел в виде порядковых числительных

[](#пропись-чисел-в-виде-порядковых-числительных)

Метод `russian->spellOrdinal(int $number, string $unit)` похож на `russian->spell(int $number, string $unit)`, но возвращает пропись числа в форме порядкового числительного:

```
$result = $morpher->russian->spellOrdinal(5, 'колесо');

echo $result->n->genitive;    // пятого
echo $result->unit->genitive; // колеса
```

### Пропись дат

[](#пропись-дат)

Метод `russian->spellDate(DateTime $date)` склоняет по падежам дату:

```
$date = new DateTime();
$result = $morpher->russian->spellDate($date);

echo $result->genitive;     // двадцать девятого июня две тысячи девятнадцатого года
echo $result->instrumental; // двадцать девятому июня две тысячи девятнадцатого года
```

### Склонение прилагательных по родам

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

Метод `russian->adjectiveGenders(string $adjective)` склоняет данное ему прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:

```
$result = $morpher->russian->adjectiveGenders('уважаемый');

echo $result->feminine; // уважаемая
echo $result->neuter;   // уважаемое
echo $result->plural;   // уважаемые
```

Требования к входному прилагательному:

- Оно должно быть в мужском роде, в единственном числе.
- Оно должно быть полным, т.е. "полный", а не "полон".
- Оно должно быть одним словом. Внутри слова допустимы дефис и апостроф: рабоче-крестьянский, Кот-д'Ивуарский. Вокруг слова допустимы пробелы, кавычки и другие знаки.

### Образование прилагательных

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

Метод `russian->adjectivize(string $lemma)` образует прилагательные от названий городов и стран: Москва – московский, Ростов – ростовский, Швеция – шведский, Греция – греческий.

Пример:

```
$result = $morpher->russian->adjectivize('Москва');

print_r($result); // ['московский']
```

Метод возвращает массив строк. Что они означают, описано [здесь](https://morpher.ru/adjectivizer/).

### Расстановка ударений в текстах

[](#расстановка-ударений-в-текстах)

Метод `russian->addStressMarks(string $text)` расставляет ударения в текстах на русском языке:

```
$result = $morpher->russian->addStressMarks('Три девицы под окном');

echo $result; // Три деви́цы под окно́м
```

Ударение отмечается символом с кодом U+0301, который вставляется сразу после ударной гласной. Односложные слова не получают знака ударения, за исключением случаев, когда предлог или частица несет на себе ударение: за́ руку, не́ за что. Варианты прочтения разделяются вертикальной чертой, например:

```
$result = $morpher->russian->addStressMarks('Белки питаются белками');

echo $result; // Бе́лки|Белки́ пита́ются бе́лками|белка́ми
```

### Склонение по падежам на украинском языке

[](#склонение-по-падежам-на-украинском-языке)

Украинский вариант склонения — метод `ukrainian->declension(string $phrase, string ...$flags)`:

```
$result = $morpher->ukrainian->declension('Крутько Катерина Володимирiвна');

echo $result->genitive; // Крутько Катерини Володимирівни
echo $result->dative;   // Крутько Катерині Володимирівні
echo $result->vocative; // Крутько Катерино Володимирівно
```

`$result` — объект `DeclensionResult` со следующими свойствами:

- `nominative` — текст в именительном падеже;
- `genitive` — текст в родительном падеже;
- `dative` — текст в дательном падеже;
- `accusative` — текст в винительном падеже;
- `instrumental` — текст в творительном падеже;
- `prepositional` — текст в местном падеже;
- `vocative` — текст в звательном падеже.

При использовании платного аккаунта на сервисе, определяются дополнительные свойства:

- `gender` — род (чоловічий, жіночий);

Украинская версия пока обрабатывает только имена, фамилии и отчества.

#### Флаги для разрешения неоднозначностей

[](#флаги-для-разрешения-неоднозначностей-1)

```
use Morpher\Ukrainian\UkrainianClient;

$result = $morpher->ukrainian->declension('Карен', UkrainianClient::FLAG_FEMININE);

echo $result->genitive; // Карен (женское имя не склоняется)
```

Флаги поддерживаемые для `ukrainian->declension(string $phrase, string ...$flags)`:

- UkrainianClient.FLAG\_FEMININE — Женский род;
- UkrainianClient.FLAG\_MASCULINE — Мужской род;
- UkrainianClient.FLAG\_NEUTER — Средний род;
- UkrainianClient.FLAG\_PLURAL — Множественное число.

### Пропись чисел и согласование с числом на украинском языке

[](#пропись-чисел-и-согласование-с-числом-на-украинском-языке)

Метод `ukrainian->spell(int $number, string $unit)` решает задачу получения прописи числа (одна тисяча сто двадцять п'ять) и согласование единицы измерения с предшествующем числом (один рубль, два рубля, п'ять рублів):

```
$result = $morpher->ukrainian->spell(235, 'рубль');

echo $result->n->genitive;    // двохсот тридцяти п'яти
echo $result->unit->genitive; // рублів
```

### Склонение по падежам, числам и лицам на казахском языке

[](#склонение-по-падежам-числам-и-лицам-на-казахском-языке)

Для склонения слов и словосочетаний используется метод `qazaq->declension(string $phrase)`:

```
$result = $morpher->qazaq->declension('менеджер');

echo $result->genitive;                            // менеджердің
echo $result->plural->genitive;                    // менеджерлердің
echo $result->plural->firstPersonPlural->genitive; // менеджерлеріміздің
```

`$result` — объект `DeclensionResult` со следующими свойствами:

- `nominative` — текст в именительном падеже;
- `genitive` — текст в родительном падеже;
- `dative` — текст в дательно-направительном падеже;
- `accusative` — текст в винительном падеже;
- `ablative` — текст в исходном падеже;
- `locative` — текст в местном падеже;
- `instrumental` — текст в творительном падеже;
- `plural` — возвращает объект со свойствами-падежами для текста во множественном числе.

### Остаток запросов

[](#остаток-запросов)

Метод `getQueriesLeft()` возвращает остаток запросов на данный момент. Лимит на запросы восстанавливается в `00:00 UTC`.

```
$result = $morpher->getQueriesLeft();

echo $result; // 100
```

### Получить список исправлений

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

Для того чтобы получить список всех исправлений, нужно использовать метод `russian->userDict->getAll()`или `ukrainian->userDict->getAll()`:

```
$result = $morpher->russian->userDict->getAll();

print_r($result); // Массив с объектами CorrectionEntry
```

Объект `СorrectionEntry` со следующими свойствами:

- `singular` — объект `CorrectionForms` с формами в единственном числе;
- `plural` — объект `CorrectionForms` с формами во множественном числе;
- `gender` — род (мужской, женский или средний).

Объект `CorrectionForms` со следующими свойствами:

- `nominative` — текст в именительном падеже;
- `genitive` — текст в родительном падеже;
- `dative` — текст в дательном падеже;
- `accusative` — текст в винительном падеже;
- `instrumental` — текст в творительном падеже;
- `prepositional` — текст в предложном падеже;
- `locative` — текст в местном падеже;

Для украинского языка:

Объект `СorrectionEntry` со следующими свойствами:

- `singular` — объект `CorrectionForms` с формами в единственном числе;
- `gender` — род (чоловічий, жіночий).

Объект `CorrectionForms` со следующими свойствами:

- `nominative` — текст в именительном падеже;
- `genitive` — текст в родительном падеже;
- `dative` — текст в дательном падеже;
- `accusative` — текст в винительном падеже;
- `instrumental` — текст в творительном падеже;
- `prepositional` — текст в местном падеже;
- `vocative` — текст в звательном падеже.

### Добавить или изменить исправление

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

Для добавления или изменения исправления использовать метод `russian->userDict->addOrUpdate(CorrectionEntry $entry)`.

```
use Morpher\Russian\CorrectionEntry;
use Morpher\Russian\CorrectionForms;

$singular = new CorrectionForms();
$singular->nominative = 'Кошка';
$singular->dative = 'Пантере';

$plural = new CorrectionForms();
$plural->dative = 'Пантерам';

$entry = new CorrectionEntry();

$morpher->russian->userDict->addOrUpdate($entry); // true
```

Для украинского языка:

```
use Morpher\Ukrainian\CorrectionEntry;
use Morpher\Ukrainian\CorrectionForms;

$singular = new CorrectionForms();
$singular->nominative = 'Кiшка';
$singular->dative = 'Пантерi';

$entry = new CorrectionEntry();

$morpher->ukrainian->userDict->addOrUpdate($entry); // true
```

### Удаление исправления

[](#удаление-исправления)

Для того чтобы удалить исправление, достаточно передать строку в именительном падеже в метод `russian->userDict->remove(string $nominativeForm)`:

```
$morpher->russian->userDict->remove('Кошка'); // true
```

Для украинского языка:

```
$morpher->ukrainian->userDict->remove('Кiшка'); // true
```

Разработка
----------

[](#разработка)

PHP: Убедитесь, что [установлена](https://www.php.net/downloads) версия PHP не ниже ^7.4. Проверить это можно с помощью `php -v`.

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

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

Сделайте форк репозитория `morpher-ws3-php-client`.

Затем выполните:

```
$ git clone git@github.com:/morpher-ws3-php-client.git
$ cd morpher-ws3-php-client
$ composer install
```

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

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

```
$ composer test
```

### Выпуск нового релиза

[](#выпуск-нового-релиза)

- [Добавить новый релиз](https://github.com/masterWeber/morpher-ws3-php-client/releases) на GitHub.

Примерно через минуту новый пакет должен появиться на [packagist.org](https://packagist.org/packages/masterweber/morpher-ws3-php-client).

License
-------

[](#license)

[MIT](LICENSE)

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

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

Total

5

Last Release

1892d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/34d2886f50d9f510a3dcfeac56044b9d51751f1708df324cff83d3b57cf75968?d=identicon)[masterWeber](/maintainers/masterWeber)

---

Top Contributors

[![masterWeber](https://avatars.githubusercontent.com/u/47494224?v=4)](https://github.com/masterWeber "masterWeber (36 commits)")

---

Tags

web servicemorpherсклоняторморферсклонятельпадежродительныйдательныйрусскомукраинскомказахском

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/masterweber-morpher-ws3-php-client/health.svg)

```
[![Health](https://phpackages.com/badges/masterweber-morpher-ws3-php-client/health.svg)](https://phpackages.com/packages/masterweber-morpher-ws3-php-client)
```

###  Alternatives

[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

4.8k4.3k](/packages/shlinkio-shlink)[ralphjsmit/laravel-helpers

A package containing handy helpers for your Laravel-application.

13704.6k2](/packages/ralphjsmit-laravel-helpers)[dhlparcel/magento2-plugin

DHL Parcel plugin for Magento 2

11180.5k2](/packages/dhlparcel-magento2-plugin)[aedart/athenaeum

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

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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