Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yosymfony/httpserver
A simple HTTP server for PHP
https://github.com/yosymfony/httpserver
Last synced: about 1 month ago
JSON representation
A simple HTTP server for PHP
- Host: GitHub
- URL: https://github.com/yosymfony/httpserver
- Owner: yosymfony
- License: mit
- Created: 2014-08-10T17:45:04.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-01-14T18:35:05.000Z (almost 8 years ago)
- Last Synced: 2024-09-20T12:08:45.040Z (3 months ago)
- Language: PHP
- Size: 17.6 KB
- Stars: 19
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A simple HTTP server for PHP
----------------------------HttpServer is a simple HTTP server powerd [REACT](http://reactphp.org/).
[![Build Status](https://travis-ci.org/yosymfony/HttpServer.svg?branch=master)](https://travis-ci.org/yosymfony/HttpServer)
## Installation
Use [Composer](http://getcomposer.org/) to install Yosyfmony HttpServer package:
Add the following to your `composer.json` and run `composer update`.
"require": {
"yosymfony/httpserver": "1.3.x"
}More information about the package on [Packagist](https://packagist.org/packages/yosymfony/httpserver).
## How to use?
It's simple. The RequestHandler need a function for managing each connection:
```
$requestHandler = new RequestHandler(function($request) {
return 'Hi Yo! Symfony';
});$server = new HttpServer($requestHandler);
$server->start();// go to http://localhost:8080
```## How to configure the RequestHandler?
**You can configure port and host for listening requests**:
```
$requestHandler = new RequestHandler( function($request) {
return 'Hi Yo! Symfony';
});$requestHandler->listen(8081, '127.0.0.1');
```The defatult values:
* port: 8080
* host: 0.0.0.0### The handler function
The handler function receives a unique parameter to describe the resquest. By default, this argument
is a object type [React\Http\Request](https://github.com/reactphp/http/blob/master/src/Request.php).
If you want to receive a [Symfony HttpFoundation Request](http://symfony.com/doc/current/components/http_foundation/introduction.html#request)
you need active this mode:```
$requestHandler = new RequestHandler( function($request) {
return 'Hi Yo! Symfony';
});$requestHandler
->listen(8081, '127.0.0.1')
->enableHttpFoundationRequest(); // $requestHandler uses fluent interface
```In case you want to use a HttpKernelInterface like Symfony, Silex or Laravel, simple use the `HttpKernelRequestHandler` handler like this:
```
// Create our kernel.
$httpKernel = new ExampleHttpKernel();
$options = array(
'host' => '127.0.0.1',
'port' => 8081,
);// Wrap it with the RequestHandler.
$handler = new \Yosymfony\HttpServer\HttpKernelRequestHandler($httpKernel, $options);// Start the server using the RequestHandler.
$server = new \Yosymfony\HttpServer\HttpServer($handler);
$server->start();
```## The response
The most simple use-case is return a string. By default the `Content-Type` value is `text/plain` at the response header:
```
$requestHandler = new RequestHandler( function($request) {
return 'Hi Yo! Symfony';
});
```If you want customize the status code and the response header you can return a array like this:
```
requestHandler = new RequestHandler( function($request) {
return [
'content' => 'Hi Yo! Symfony',
'headers' => ['Content-Type' => 'text/xml'],
'status_code' => 200
];
});
```The best way to make a response is using [Response from Symfony HttpFoundation](http://symfony.com/doc/current/components/http_foundation/introduction.html#response):
```
use Symfony\Component\HttpFoundation\Response;requestHandler = new RequestHandler( function($request) {
return new Response(
'Hi Yo! Symfony',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
});
```## Unit tests
You can run the unit tests with the following command:
$ cd your-path/vendor/yosymfony/httpserver
$ composer.phar install --dev
$ phpunit