Code Monkey home page Code Monkey logo

httpserver's Introduction

A simple HTTP server for PHP

HttpServer is a simple HTTP server powerd REACT.

Build Status

Installation

Use Composer to install Yosyfmony HttpServer package:

Add the following to your composer.json and run composer update.

"require": {
    "yosymfony/httpserverl": "1.2.x-dev"
}

More information about the package on Packagist.

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. If you want to receive a Symfony HttpFoundation 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' => '<?xml version="1.0" encoding="UTF-8"?><root>Hi Yo! Symfony</root>',
        'headers' => ['Content-Type' => 'text/xml'],
        'status_code' => 200
    ];
});

The best way to make a response is using Response from Symfony HttpFoundation:

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

httpserver's People

Contributors

yosymfony avatar h4cc avatar

Watchers

Elnur Abdurrakhimov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.