承接 cloudcastle/http-router 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

cloudcastle/http-router

Composer 安装命令:

composer require cloudcastle/http-router

包简介

Fast, standalone, PSR-friendly HTTP router for PHP with zero runtime dependencies.

README 文档

README

Packagist PHP License Quality

Быстрый, безопасный и строго типизированный HTTP-роутер для PHP 8.1+ без единой runtime-зависимости.

⚠️ Статус: активная разработка (ветка 0.x). Реализовано текучее ядро маршрутизации (раздел «Возможности»). Остальные пункты из Roadmap находятся в работе и в документации явно помечены как «планируется». Мы принципиально не описываем и не рекламируем то, чего ещё нет в коде — см. сравнение с аналогами, где честно показаны и сильные, и слабые стороны.

Возможности (реализовано)

  • Ноль runtime-зависимостей — только сам PHP. Интеграция с PSR-7/PSR-15 будет опциональной.
  • Текучее (fluent) определение маршрутов->name(), ->where() в цепочке вызовов.
  • Все HTTP-глаголы и кастомные методыget/post/put/patch/delete/head/options, match([...]) для нескольких методов, any(), custom('PURGE', …) для нестандартных методов.
  • Параметры и ограничения/{id} (по умолчанию [^/]+), встроенные /{id:\d+} и ->where('id', '\d+') (приоритет у where()).
  • Безопасное сопоставление — статические сегменты экранируются, . и другие мета-символы трактуются буквально, параметр не «перепрыгивает» через /.
  • Различение 404 и 405 — «путь не найден» отделён от «метод не разрешён»; для 405 доступен список допустимых методов (для заголовка Allow).
  • Именованные маршруты — поиск по имени (getByName()).
  • Строгая типизацияdeclare(strict_types=1), нативные типы, PHPStan max + Psalm level 1.

Требования

  • PHP 8.1 или новее.
  • Никаких других runtime-зависимостей.

Установка

composer require cloudcastle/http-router

Быстрый старт

use CloudCastle\Http\Router\Router;
use CloudCastle\Http\Router\Exception\MethodNotAllowedException;
use CloudCastle\Http\Router\Exception\RouteNotFoundException;

$router = new Router();

$router->get('/', 'home');
$router->get('/users/{id}', 'users.show')->name('users.show')->where('id', '\d+');
$router->post('/users', 'users.store');
$router->match(['PUT', 'PATCH'], '/users/{id}', 'users.update');
$router->custom('PURGE', '/cache/{key}', 'cache.purge'); // произвольный HTTP-метод

try {
    $match = $router->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

    $action = $match->getRoute()->getAction(); // 'users.show'
    $id     = $match->getParameter('id');      // '42' для /users/42
} catch (MethodNotAllowedException $e) {
    header('Allow: ' . implode(', ', $e->getAllowedMethods()), true, 405);
} catch (RouteNotFoundException $e) {
    http_response_code(404);
}

Действие (action) — любое значение (строка, callable, пара [Controller::class, 'method']): роутер хранит и возвращает его как есть. Исполнение действий появится вместе с ActionResolver.

Сравнение с аналогами (кратко)

Полные таблицы (возможности, качество кода, зависимости) — в docs/ru/comparison.md. Кратко и честно, на текущий момент:

Критерий CloudCastle (сейчас) Symfony Laravel FastRoute Slim Nette
Базовая маршрутизация
Параметры + ограничения
Кастомные HTTP-методы
Именованные маршруты
Ноль runtime-зависимостей
Группы / middleware / PSR-15 🚧 ⚠️ ⚠️
Rate limit / auto-ban / IP-фильтр 🚧 ⚠️ ⚠️
Генерация URL / кэш маршрутов 🚧 ⚠️ ⚠️

✅ есть · ⚠️ частично / вне ядра · ❌ нет · 🚧 у нас в разработке (см. Roadmap).

Честный вывод: сегодня по широте возможностей мы уступаем зрелым роутерам — многое ещё в разработке. Наши текущие преимущества — ноль зависимостей, строгая типизация и качество кода (ниже). Цель проекта — довести функциональность до уровня «всё, что умеют конкуренты вместе», не потеряв в качестве и безопасности.

Качество

Каждое изменение проходит composer ci: PHP-CS-Fixer + phpcs (PSR-12), PHPStan (max, без baseline), Psalm (level 1), PHPMD, Deptrac, Rector, затем 5 наборов тестов с пофайловым порогом покрытия и мутационным тестированием Infection. Актуальные метрики и методика — в docs/ru/testing.md.

Документация

Лицензия

MIT.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固