{"id":19387004,"url":"https://github.com/bermudaphp/psr15factory","last_synced_at":"2025-04-23T23:30:53.365Z","repository":{"id":62493490,"uuid":"257334226","full_name":"bermudaphp/psr15factory","owner":"bermudaphp","description":"Makes middleware for psr-15 based application","archived":false,"fork":false,"pushed_at":"2025-04-10T13:46:03.000Z","size":235,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"v3","last_synced_at":"2025-04-10T14:02:13.703Z","etag":null,"topics":["http","middleware","middleware-factory","middleware-resolver","middlewares","php","php-middleware","php8","php84","psr-15"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bermudaphp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-20T16:05:19.000Z","updated_at":"2025-04-10T13:45:38.000Z","dependencies_parsed_at":"2024-11-10T10:08:10.763Z","dependency_job_id":"76f4e006-d6bc-47b9-8d0f-448a411d947c","html_url":"https://github.com/bermudaphp/psr15factory","commit_stats":{"total_commits":204,"total_committers":2,"mean_commits":102.0,"dds":0.5,"last_synced_commit":"e31e0c4e89a12671d0723b5c839f8c210df8f1d7"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fpsr15factory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fpsr15factory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fpsr15factory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fpsr15factory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bermudaphp","download_url":"https://codeload.github.com/bermudaphp/psr15factory/tar.gz/refs/heads/v3","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250531836,"owners_count":21446065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["http","middleware","middleware-factory","middleware-resolver","middlewares","php","php-middleware","php8","php84","psr-15"],"created_at":"2024-11-10T10:08:06.400Z","updated_at":"2025-04-23T23:30:53.356Z","avatar_url":"https://github.com/bermudaphp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Installation\n\n```bash\ncomposer require bermudaphp/psr15factory\n```\n\n## Usage\n\n```php\n$factory = new MiddlewareFactory($containerInterface, $responseFactoryInterface);\n```\n\n## Classname \n\n```php\n\nclass MyMiddleware implements MiddlewareInterface \n{\n    private ResponseFactoryInterface $factory;\n    \n    public function __construct(ResponseFactoryInterface $factory)\n    {\n        $this-\u003efactory = $factory;\n    }\n    \n    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface\n    {\n        return $this-\u003efactory-\u003ecreateResponse(200, 'OK!');\n    }\n}\n\n\n$middleware = $factory-\u003emake(MyMiddleware::class);\n$middleware instanceof MyMiddleware::class // true\n\n\nclass MyHandler implements RequestHandlerInterface \n{\n    private ResponseFactoryInterface $factory;\n    \n    public function __construct(ResponseFactoryInterface $factory)\n    {\n        $this-\u003efactory = $factory;\n    }\n    \n    public function handle(ServerRequestInterface $request): ResponseInterface\n    {\n        return $this-\u003efactory-\u003ecreateResponse(200, 'OK!');\n    }\n}\n\n\n$middleware = $factory-\u003emake(MyHandler::class);\n$middleware instanceof MiddlewareInterface::class // true\n\n```\n\n## Lazy Middleware\n\n```php\n\n$middleware = $factory-\u003emake(static function(ContainerInterface $c) use ($uri, $permanent): RedirectMiddleware\n{         \n    return new RedirectMiddleware($uri, $c-\u003eget(ResponseFactoryInterface::class), $permanent);\n});\n\n$middleware instanceof MiddlewareInterface::class // true\n$middleware instanceof RedirectMiddleware::class // true\n\n```\n\n## Callable Middleware\n\n```php\n\n$middleware = $factory-\u003emake(static function(ServerRequestInterface $req): ResponseInterface\n{\n    return new TextResponse('Hello World!');\n});\n\n$middleware instanceof MiddlewareInterface::class // true\n\nclass MyCallback\n{\n    public function methodName(ServerRequestInterface $req) : ResponseInterface\n    {\n        return new TextResponse('Hello World');\n    }\n}\n\n$middleware = $factory-\u003emake('MyCallback::methodName');\n$middleware instanceof MiddlewareInterface::class // true\n```\n\n## Invokable Middleware\n\n```php\n\nclass Invokable\n{\n    public function __invoke(string $name) : ResponseInterface\n    {\n        return new TextResponse('Hello, '. $name);\n    }\n}\n\n$factory-\u003emake('Invokable::class') instanceof MiddlewareInterface::class ; // true\n```\n\n## Request Args Middleware\n\n```php\n\n$middleware = $factory-\u003emake(static function(#[Bermuda\\MiddlewareFactory\\Attribute\\RequestAttribute('name')] string $name): ResponseInterface\n{\n    return new TextResponse(sprintf('Hello, %s!', $name));\n});\n\n$response = $middleware-\u003eprocess((new ServerRequest())-\u003ewithAttribute('name', 'John'), $requestHandler);\n$response instanceof TextResponse // true\n```\n\n## Availables callback method  signature \n\n```php\nfunction(): ResponseInterface ;\nfunction(ContainerInterface $container): ResponseInterface ;\nfunction(mixed ... $args): ResponseInterface ;\nfunction(ServerRequestInterface $req): ResponseInterface ;\nfunction(ServerRequestInterface $req, RequestHandlerInterface $handler): ResponseInterface ;\nfunction(ServerRequestInterface $req, ResponseInterface $resp, callable $next): ResponseInterface ;\nfunction(ServerRequestInterface $req, callable $next): ResponseInterface ;\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbermudaphp%2Fpsr15factory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbermudaphp%2Fpsr15factory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbermudaphp%2Fpsr15factory/lists"}