bmnd / core
Installs: 7
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/bmnd/core
Requires
- psr/http-message: ^2.0
This package is not auto-updated.
Last update: 2025-12-17 20:34:17 UTC
README
Быстрый старт
<?php require __DIR__ . '/vendor/autoload.php'; \BMND\Router\Router::setup('app/Controllers', 'App\\Controllers\\', 'path/to/cacheDir')->run();
Установка
Composer
composer require bmnd/core
Контроллеры
Базовый контроллер
<?php namespace App\Controllers; use BMND\Router\Route; class TestController { #[Route('/test/{id}', 'GET', 'test.show')] public function show(int $id) { return "ID: {$id}"; } }
Маршрутизация
Атрибут Route
#[Route('/path/{param}', ['METHODS'], 'route.name', middlewares: [Middleware::class])]
Параметры пути
/user/{id}
Dependency Injection
Автоматическая инъекция
public function index(UserService $service, int $id) { // $service автоматически создастся return $service->find($id); }
Middleware
Создание middleware
<?php namespace App\Middleware; use BMND\Http\MiddlewareInterface; use BMND\Http\RequestInterface; use BMND\Http\ResponseInterface; use BMND\Http\RequestHandlerInterface; class AuthMiddleware implements MiddlewareInterface { public function process(RequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { if (!auth_check()) { return new Response('Unauthorized', 401); } return $handler->handle($request); } }
Использование
#[Route('/admin', 'GET', 'admin', middlewares: [AuthMiddleware::class, AdminMiddleware::class])]
Request & Response
Request методы
$request->getMethod() $request->getUri() $request->getQueryParams() // ?a=b $request->getParsedBody() // POST данные $request->getAttributes() // параметры пути $request->getCookieParams() $request->getServerParams()
Создание Response
return new Response('Content', 200, ['Content-Type' => 'text/html']);
Исключения
Исключения в контроллерах
use BMND\Router\Error; class ErrorController { #[Error("App\\Exception\\TestException")] // отлов TestException public function TestException(TestException $exception) { echo "TestException: " . $exception->getMessage(); } #[Error(404)] // Вызывается когда не найден маршрут public function notFound() { return "Page not found"; } #[Error(500)] // Любые ошибки не отловленные отдельно public function internalError(\Throwable $exception) { echo $exception->getMessage(); } }
Расширенные примеры
API контроллер
#[Route('api', name: 'api.')] class ApiController { #[Route('/users', 'GET', 'users.index')] public function index(UserService $service) { return new Response($service->all()); } #[Route('/users/{id}', 'GET', 'users.show')] public function show(int $id, UserService $service) { return new Response($service->find($id)); } }
Middleware цепочка
#[Route('/dashboard', 'GET', 'dashboard', middlewares: [CorsMiddleware::class, AuthMiddleware::class, LogMiddleware::class] )]
Пример проекта
composer create-project bmnd/skeleton example
Это создаст проект практически с полноцееным фреймворком, используя данный проект.
Лицензия
MIT License.