2017 © Pedro Peláez
 

library reactphp-slim

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

image

mbarquin/reactphp-slim

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

  • Friday, May 5, 2017
  • by mbarquin
  • Repository
  • 3 Watchers
  • 16 Stars
  • 105 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 4 Open issues
  • 5 Versions
  • 4 % Grown

The README.md

reactphp-slim

Introduction

This library is created in order to use reactPHP as a HTTP server for Slim framework. It will launch a Slim\App process when a request is made, and at the same time it will transfer data from reactPHP native objects into Slim objects. With this, we will be able to create a basic react server for a Slim framework application., (*1)

Data, cookies and file uploads transmission between react and Slim objects. You can access through slim native functions to uploaded files, data and cookies., (*2)

Installation

You can install the component in the following ways:, (*3)

  • Use the official Github repository (https://github.com/mbarquin/reactphp-slim.git)
  • Use composer : composer require mbarquin/reactphp-slim --dev

Usage

After the composer autoload requirement a Slim\App should be instanced and prepared as usual. Slim\App can be bootstrapped and all dependencies can be injected as you like, after that, a reactphp-slim server should be instanced and call the run method in it, using slim\App as parameter. The reactphp-slim server will act as intermediary and will launch the slim application through the process method when requested, this method avoids the usual request and response bootstrap made by Slim., (*4)

When uploading files, move_uploaded_files() probably won't work, use native object methods to move the file., (*5)

require '../vendor/autoload.php';

use \mbarquin\reactSlim;

// We keep a new Slim app instance.
$app = new \Slim\App();

// We add a closure to attend defined request routes
$app->any('/hello/{name}', function (
        \Slim\Http\Request $request,
        \Slim\Http\Response $response) {

        $name = $request->getAttribute('name');

        $response->getBody()->write("Hello, $name");
        $response->getBody()->write(print_r($request->getParsedBody(), true));
        $response->getBody()->write(print_r($request->getCookieParams(), true));
        $response->getBody()->write(print_r($request->getHeaders(), true));
        // $response->getBody()->write(print_r($request->getUploadedFiles(), true));

        return $response;
    });

$server = new \mbarquin\reactSlim\Server();

$server->withHost('192.168.67.1')->withPort(1337)->run($app);

\mbarquin\reactSlim\Server object is the class which is going to configure and launch a ReactPHP server. It has two main methods, (*6)

withHost($string) Sets the IP to be listened to, (*7)

withPort($int) Sets the port the server will be listening to, by default it will be set to 1337., (*8)

run(\Slim\App $app) It launches the server process and wait until a request is made to launch the \Slim\App passed as parameter., (*9)

v0.4.2 Setup

This is the old setup to run the reactPHP server with a slimPHP application, (*10)

require '../vendor/autoload.php';

use mbarquin\reactSlim;

// We keep a new Slim app instance.
$app = new \Slim\App();

// We add a closure to listen defined request routes
$app->get('/hello/{name}', function (
        \mbarquin\reactSlim\Request $request,
        \mbarquin\reactSlim\Response $response) {

        $name = $request->getAttribute('name');
        $response->getBody()->write("Hello, $name");

        return $response;
    });

// We create a closure to be attached to server request event.
$serverCallback = function (
       \React\Http\Request $request,
       \React\Http\Response $response) use ($app){

    $slRequest  = \mbarquin\reactSlim\Request::createFromReactRequest($request);
    $slResponse = new \mbarquin\reactSlim\Response();

    $app->process($slRequest, $slResponse);

    $slResponse->setReactResponse($response, true);
};

// We make the setup of the ReactPHP
$loop   = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http   = new React\Http\Server($socket, $loop);

// Ligamos la closure al evento request.
$http->on('request', $serverCallback);

echo "Server running at http://127.0.0.1:1337\n";

$socket->listen(1337);
$loop->run();

The Versions

05/05 2017

dev-master

9999999-dev

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

  Sources   Download

MIT

The Requires

 

09/11 2016

v0.4.3

0.4.3.0

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

  Sources   Download

MIT

The Requires

 

31/08 2016

v0.4.2

0.4.2.0

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

  Sources   Download

MIT

The Requires

 

13/07 2016

v0.4.1

0.4.1.0

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

  Sources   Download

MIT

The Requires

 

13/07 2016

0.4.0

0.4.0.0

Slim Request and Response extended to allow reactPHP serve a Slim framework instance

  Sources   Download

MIT

The Requires