mindplay/sapi-host

FCGI SAPI host for dispatch of PSR-15 Handler

1.0.1 2024-10-26 11:49 UTC

README

This library implements a SAPI host for dispatch of PSR-15 RequestHandlerInterface.

In a nutshell, this is a front-controller for the index.php file in a PSR-7/15/17 based project.

Originally a fork of Daniel Bannert's narrowspark/http-emitter package, this package takes a different approach, internally leveraging Tobias Nyholm's nyholm/psr7-server package to bootstrap the incoming PSR-7 Request.

The philosophy of this package is that hosting a single handler, for a single request, should be a single operation.

Usage

To bootstrap a SapiHost, you need to pick a PSR-7 and PSR-17 implementation - for example, nyholm/psr7-server supports both, and you can install it with:

composer require nyholm/psr7-server

You need to have your PSR-15 handler implementation to dispatch, and then, for example, dispatch it from an index.php file, as follows:

<?php

use mindplay\host\SapiHost;
use Nyholm\Psr7\Factory\Psr17Factory;

$factory = new Psr17Factory();

$host = new SapiHost(
    $factory,
    $factory,
    $factory,
    $factory
);

$host->dispatch(new YourRequestHandler());

Note that Psr17Factory implements all of the required PSR-17 factory interfaces.