PHPackages                             alexpts/php-simple-router - 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. [HTTP &amp; Networking](/categories/http)
4. /
5. alexpts/php-simple-router

ActiveLibrary[HTTP &amp; Networking](/categories/http)

alexpts/php-simple-router
=========================

Simple router compatible with the PSR-7

1.0.0(3y ago)2491[1 issues](https://github.com/alexpts/php-simple-router/issues)MITPHPPHP &gt;=7.3

Since Dec 13Pushed 3y ago1 watchersCompare

[ Source](https://github.com/alexpts/php-simple-router)[ Packagist](https://packagist.org/packages/alexpts/php-simple-router)[ Docs](https://github.com/alexpts/php-simple-router)[ RSS](/packages/alexpts-php-simple-router/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (3)Dependencies (1)Versions (4)Used By (0)

php-simple-router
=================

[](#php-simple-router)

[![phpunit](https://github.com/alexpts/php-simple-router/actions/workflows/phpunit.yml/badge.svg?branch=master)](https://github.com/alexpts/php-simple-router/actions/workflows/phpunit.yml)[![codecov](https://camo.githubusercontent.com/3ed1374e16794f5c40a12ce43a07f89aa6fbb1afa52e2c582f1ec3e9da2bf84a/68747470733a2f2f636f6465636f762e696f2f67682f616c65787074732f7068702d73696d706c652d726f757465722f6272616e63682f6d61737465722f67726170682f62616467652e7376673f746f6b656e3d31344c36494a41355545)](https://codecov.io/gh/alexpts/php-simple-router)Simple router compatible with the PSR-7

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

#### Router

[](#router)

Объект, который храни в себе путь/регулярку и ряд ограничений на http метод или переменную запроса, а также обработчик, который нужно вызвать для этого пути.

```
$route2 = new Route('/blog/{id}/', $endPoint2, ['id' => '\d+']);

$route = new Route('/{lang}/users/{id}/{action}/', $endPoint, [
	'lang' => 'ru|en',
	'action' => '[a-z0-9_]+',
	'id' => '\d+',
], Route::ONLY_XHR);
```

#### CollectionRoute

[](#collectionroute)

Объект для работы с коллекцией роутов. Роуты добавляются в коллекцию роутов с определенным приоритетом. Метод `getRoutes` возвращает массив всех роутов отсортированных по приоритету.

#### Matcher

[](#matcher)

Объект осуществляет поиск активного роута на основе соллекции роутов и текущего uri запроса. Простой поиск первого совпадения (наиболее приоритетного роута):

```
$matcher = new Matcher();
$uri = '/profile/23/';
$routes = ...; // CollectionRoute instance
$endPoint = $matcher->matchFirst($routes, $uri); // IPoint instance
```

Можно получить все `endPoint` объекты, а не только первый. Метод `match` возвращает генератор. Через генератор достаются все объекты `endPoint` совпавших роутов.

```
 foreach ($matcher->match($routes, $uri) as $endPoint) {
 	...
 }
```

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

#### EndPoint

[](#endpoint)

Все обработчики поддерживают интерфейс IPoint и служат для создания обработчика запроса с нужными параметрами и вызова обработчика с нужными параметрами. В комплекте идет ряд реализаций endPoint, которые могут помочь коротко и лаконично описать правила роутинга вашего приложения.

###### CallablePoint

[](#callablepoint)

Предназначен для вызова любого обработчика callable типа.

```
$endPoint = new Point\CallablePoint([
	'callable' => function () {
		return '404';
	}
]);
```

##### ControllerPoint

[](#controllerpoint)

Явно задает класс контроллера и метод.

```
$endPoint = new Point\ControllerPoint([
	'controller' => 'CollectionRouteTest',
	'action' => 'action'
]);
```

###### DynamicController

[](#dynamiccontroller)

Класс контроллера формируется динамически из переменной запрос `:controller`, которая является обязательной. Action берется из переменной запроса `:action` (по умолчанию `index`)

```
$endPoint = new Point\DynamicController([
	'prefix' => 'Demo'
]);
```

###### ControllerDynamicAction

[](#controllerdynamicaction)

Похож на `DynamicController` за исключением того, что контрллер указывается явно, а не берется динамически из переменной запроса `:controller`.

```
$endPoint = new Point\ControllerDynamicAction([
	'controller' => SomeController::class
]);
```

##### Создавайте новые endPoint

[](#создавайте-новые-endpoint)

Охватить специфику каждого проекта очень сложно и это будет избыточно. Вы можете легко создать более специфичный класс типа `IPoint` на основе базовых классов или с нуля. Примером такого класса для своего проекта служит класс `DynamicBundleController`. Он призван показать как легко и просто делаются endPoint-ы под свой проект, если дефолтные по какой-то причине не подошли.

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity60

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

Total

3

Last Release

1148d ago

Major Versions

0.0.2 → 1.0.02023-05-09

PHP version history (2 changes)0.0.1PHP &gt;5.5

1.0.0PHP &gt;=7.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/31106536118e11bf9d0c9d7f467db5b534efa9c46ee76680b308f0c39d9a798c?d=identicon)[alexpts](/maintainers/alexpts)

---

Top Contributors

[![alexpts](https://avatars.githubusercontent.com/u/1306916?v=4)](https://github.com/alexpts "alexpts (40 commits)")

---

Tags

psr-7router

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/alexpts-php-simple-router/health.svg)

```
[![Health](https://phpackages.com/badges/alexpts-php-simple-router/health.svg)](https://phpackages.com/packages/alexpts-php-simple-router)
```

###  Alternatives

[league/route

Fast routing and dispatch component including PSR-15 middleware, built on top of FastRoute.

6673.2M137](/packages/league-route)[aura/router

Powerful, flexible web routing for PSR-7 requests.

5001.5M69](/packages/aura-router)[middlewares/fast-route

Middleware to use FastRoute

95200.5k15](/packages/middlewares-fast-route)[sunrise/http-router

A powerful solution as the foundation of your project.

17450.9k10](/packages/sunrise-http-router)[middlewares/aura-router

Middleware to use Aura.Router

1110.9k3](/packages/middlewares-aura-router)

PHPackages © 2026

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