Skip to content

weew/http-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Http App

Build Status Code Quality Test Coverage Version Licence

Table of contents

Installation

composer require weew/http-app

Introduction

This is a very minimalistic wrapper for a http application.

Usage

The whole app lifecycle is event based. To successfully handle http requests you must handle the HandleHttpRequestEvent and provide a valid response that implements the IHttpResponse interface.

Below is a very basic example of how you might implement this.

$app = new HttpApp();
$app->getEventer()
    ->subscribe(HandleHttpRequestEvent::class, function(HandleHttpRequestEvent $event) {
        $request = $event->getRequest();

        // handle request (do some routing, call a controller, etc.)
        // provide a response that implements the IHttpResponse interface
        $event->setResponse($response);
    });

There is already an existing implementation for this, see weew/http-app-request-handler.

Environment awareness

Sometimes you might want, for example during tests, to send a request to the same front controller but in a different environment. Symfony does this using different front controllers: app.php and app_dev.php. This approach will however alter the url and might not be suitable in some situations. Beside creating different front controllers you can also specify an environment using the x-env: dev header or a query param ?env=dev or a somewhere inside your url /env=dev/some/url. If an environment setting can be detected either via headers or url query or url part, the corresponding data (x-env header, env query param, env value inside the url) will be automatically removed. This feature is disabled by default and you can enable it by setting debug to true.

$app->setDebug(true);
$request = new HttpRequest();

$request->getHeaders()->set('x-env', 'stage');
// or
$request->getUrl()->getQuery()->set('env', 'stage');
// or
$request->getUrl()->setPath('/env=stage/some/url');

// app will run in the "stage" environment
$app->handle($request);

You must not use this in production! This is why it is disabled by default. Only enable this feature for your dev environment.

Extensions

There are several extensions available:

About

Http version of the weew/app package.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages