{"id":26442732,"url":"https://github.com/ahmard/reaponse","last_synced_at":"2026-04-24T12:33:30.099Z","repository":{"id":54642044,"uuid":"336564958","full_name":"Ahmard/reaponse","owner":"Ahmard","description":"ReactPHP response helper.","archived":false,"fork":false,"pushed_at":"2021-02-06T17:08:29.000Z","size":16,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-13T03:23:45.849Z","etag":null,"topics":["php","reactphp","reactphp-components","reaponse"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ahmard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-06T15:08:59.000Z","updated_at":"2021-11-20T13:18:55.000Z","dependencies_parsed_at":"2022-08-13T22:31:18.097Z","dependency_job_id":null,"html_url":"https://github.com/Ahmard/reaponse","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmard%2Freaponse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmard%2Freaponse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmard%2Freaponse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ahmard%2Freaponse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ahmard","download_url":"https://codeload.github.com/Ahmard/reaponse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244201492,"owners_count":20415088,"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":["php","reactphp","reactphp-components","reaponse"],"created_at":"2025-03-18T10:29:57.182Z","updated_at":"2026-04-24T12:33:30.062Z","avatar_url":"https://github.com/Ahmard.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReactPHP Response Helper\nThis library provides beautiful syntax for [ReactPHP HTTP](https://reactphp.org/http)\ncomponent, this library provides syntax very similar to that of NodeJS.\n\n## Installation\nYou will need [Composer](https://getcomposer.org) to install this library.\n\n```bash\ncomposer require ahmard/reactphp-response\n```\n\n## Usage\n\n### Registering middleware\n- Test\\Counter\n\n```php\nnamespace Test;\n\nuse Reaponse\\Http\\HandlerInterface;\nuse Reaponse\\Http\\ResponseInterface;\n\nclass CountHandler implements HandlerInterface\n{\n    protected static int $counts = 0;\n\n    public function handle(ResponseInterface $response): void\n    {\n        self::$counts++;\n        $response-\u003ewrite('Count: ' . self::$counts);\n        $response-\u003ehandler()-\u003enext();\n    }\n}\n```\n\n- Test\\Server\n\n```php\nnamespace Test;\n\nuse Reaponse\\Http\\HandlerInterface;\nuse Reaponse\\Http\\ResponseInterface;\n\nclass ServerHandler implements HandlerInterface\n{\n    public function handle(ResponseInterface $response): void\n    {\n        $response-\u003ehtml(', Time: ' . date('H:i:s'));\n        $response-\u003eend('.');\n    }\n}\n```\n\n- server.php\n\n```php\nuse React\\EventLoop\\Factory;\nuse React\\Socket\\Server;\nuse Reaponse\\Http\\Middleware;\nuse Test\\CounterHandler;\nuse Test\\ServerHandler;\n\nrequire 'vendor/autoload.php';\n\n$loop = Factory::create();\n$uri = '0.0.0.0:9200';\n\n$myServer = new ServerHandler();\n$myCounter = new CounterHandler();\n\n$httpServer = new \\React\\Http\\Server($loop, new Middleware($myCounter, $myServer));\n$socketServer = new Server($uri, $loop);\n\n$httpServer-\u003elisten($socketServer);\n$httpServer-\u003eon('error', function (Throwable $throwable){\n    echo $throwable;\n});\n\necho \"Server started at http://{$uri}\\n\";\n$loop-\u003erun();\n```\n\nStart the server\n```bash\nphp server.php\n```\n\n\n### Request object\n\n```php\nuse Reaponse\\Http\\HandlerInterface;\nuse Reaponse\\Http\\ResponseInterface;\n\n\nclass TestHandler implements HandlerInterface\n{\n    public function handle(ResponseInterface $response): void\n    {\n        //psr-7 compliant object\n        $request = $response-\u003erequest();\n        \n        $response-\u003ehtml(\"Method: {$request-\u003egetMethod()}\u003cbr/\u003e\");\n        \n        $response-\u003eend('Bye!');\n    }\n}\n```\n\n### Listens to response events\n\n```php\nuse Reaponse\\Http\\HandlerInterface;\nuse Reaponse\\Http\\Response;\nuse Reaponse\\Http\\ResponseInterface;\n\n\nclass TestHandler implements HandlerInterface\n{\n    public function handle(ResponseInterface $response): void\n    {\n        //listens to write event\n        $response-\u003eon(Response::ON_WRITE, function (){\n            echo \"Writing...\\n\";\n        });\n        //Listens to headers event\n        $response-\u003eon(Response::ON_HEADERS, function (){\n            echo \"Headers...\\n\";\n        });\n        //Listens to next handler event\n        $response-\u003eon(Response::ON_NEXT_HANDLER, function (){\n            echo \"Next handler...\\n\";\n        });\n        //Listens to response sending event\n        $response-\u003eon(Response::ON_BEFORE_SEND, function (){\n            echo \"Sending...\\n\";\n        });\n        \n        $response-\u003eend('Hello World');\n    }\n}\n```\n\n- All handlers must implement [HandlerInterface](src/Http/HandlerInterface.php)\n- A handler is a middleware, handler is just a fancy name given to it.\n\n### [Example](example)\n\n\n## Licence\n**Reaponse** is **MIT** licenced.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmard%2Freaponse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmard%2Freaponse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmard%2Freaponse/lists"}