PHPackages                             zer0-framework/http - 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. [Framework](/categories/framework)
4. /
5. zer0-framework/http

ActiveLibrary[Framework](/categories/framework)

zer0-framework/http
===================

v0.1.4(4y ago)22.1k1GPL-3.0-or-laterPHPPHP &gt;=7.2

Since Jun 3Pushed 4y ago1 watchersCompare

[ Source](https://github.com/zer0-framework/http)[ Packagist](https://packagist.org/packages/zer0-framework/http)[ Docs](https://github.com/zer0-framework/http)[ RSS](/packages/zer0-framework-http/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)Dependencies (2)Versions (6)Used By (0)

HTTP
====

[](#http)

Контроллеры
-----------

[](#контроллеры)

Контроллеры лежат в `\*\Controllers\` (наследуются от `\Zer0\HTTP\AbstractController`). Чтобы создать контроллер достаточно создать класс с одним или несколькими публичными методами `*Action`, а также добавить пути указывающие на него в conf/Routes.

Перед выполнением любого `*Action` происходит вызов `before()`, после — `after()`, в них принято выносить общие операции, такие как проверка авторизации пользователя.

Методы `*Action` могут возвращать экземпляр `\Zer0\HTTP\Responses\*`, в против случае если возвратное значение не null, то оно будет выведено в формате JSON (`\Zer0\HTTP\Responses\JSON`). Это поведение может быть переопределено в методе `renderResponse()` контроллера.

Конфигурирование роутов
-----------------------

[](#конфигурирование-роутов)

Формат следующий:

```
getting_started:
    path:     /getting-started/{action}
    defaults: {controller: GettingStarted, action: intro}
    methods: [GET, POST]
    export: [JS]
...

```

- path — путь данного роута, допускаются параметры (переменные) в фигурных скобках.
- path\_export — необязательный путь, который будет вместо *path* при составлении URL. Удобно при использовании CDN.
- defaults — необязательный набор значений по-умолчанию.
- methods — необязательный список допустимых методов.
- export — необязательный список того, куда экспортировать данный роут.
- sort — необязательный параметр, по которому происходит сортировка, по-умолчанию 0. Чем меньше значение, тем раньше он будет выполнен.

Если action не задан, то присваивается значение index. Controller обязан быть задан чтобы запросы могли выполняться.

Класс `\Zer0\HTTP` (`$this->http`) имеет метод

`public function url(string $routeName, $params = [], array $query = []): string`

позволяющий построить URL, например так: `$this->http->url('getting_started', 'routes', ['foo' => 'bar']);`При конфигурации роута `getting_started` как в примере выше результатом будет `/getting-started/routes?foo=bar`

Также можно пользоваться аналогичной функцией в Javascript — `Routes.url()`. При этом доступны только те роуты, у которых в списке export есть JS.

Жестко указывать URL в коде не рекомендуется.

*Внимание!* Учтите, что после внесение изменений в конфигурацию роутов необходимо выполнить `cli http build-all` (`make build-backend`)

ЧаВО
----

[](#чаво)

### Почему роутинг осуществляется в Nginx?

[](#почему-роутинг-осуществляется-в-nginx)

Такой подход имеет ряд преимуществ:

1. Количество роутов не влияет на производительность, так как Nginx не идёт перебором по списку роутов, как роутеры запросов, написанные на PHP, а используя Btree+ индекс по заякоренной части за *O(log n)* находит подходящие location'ы.
2. Разные роуты можно при желании направить на разные пулы PHP-FPM и не составляет труда добавить, например, limit\_req.
3. PHP-части даже не нужно читать и держать в памяти конфигурацию роутов.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97% 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 ~96 days

Total

5

Last Release

1788d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/031503de2dadf7cd9862134512dd76b6ffc2f02789d816a2cb33b6645e9e3bc0?d=identicon)[kakserpom](/maintainers/kakserpom)

---

Top Contributors

[![kakserpom](https://avatars.githubusercontent.com/u/175350?v=4)](https://github.com/kakserpom "kakserpom (64 commits)")[![Mirocow](https://avatars.githubusercontent.com/u/376396?v=4)](https://github.com/Mirocow "Mirocow (1 commits)")[![xdpugachevx](https://avatars.githubusercontent.com/u/1089819?v=4)](https://github.com/xdpugachevx "xdpugachevx (1 commits)")

---

Tags

highloadZer0

### Embed Badge

![Health badge](/badges/zer0-framework-http/health.svg)

```
[![Health](https://phpackages.com/badges/zer0-framework-http/health.svg)](https://phpackages.com/packages/zer0-framework-http)
```

###  Alternatives

[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

712181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)[laravel/pail

Easily delve into your Laravel application's log files directly from the command line.

91545.3M590](/packages/laravel-pail)[nette/bootstrap

🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.

68535.8M592](/packages/nette-bootstrap)

PHPackages © 2026

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