PHPackages                             idiosyncratic/http-runner - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. idiosyncratic/http-runner

ActiveLibrary[HTTP &amp; Networking](/categories/http)

idiosyncratic/http-runner
=========================

PSR-15 HTTP Request runner

0.2.0(6y ago)08ISCPHPPHP &gt;=7.3

Since Apr 24Pushed 6y ago1 watchersCompare

[ Source](https://github.com/idiosyncratic-code/http-runner)[ Packagist](https://packagist.org/packages/idiosyncratic/http-runner)[ RSS](/packages/idiosyncratic-http-runner/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (6)Versions (4)Used By (0)

The Idiosyncratic HTTP Runner
=============================

[](#the-idiosyncratic-http-runner)

Library for running an HTTP request and emitting the generated response.

Inspired by [zend-httphandlerrunner](https://docs.zendframework.com/zend-httphandlerrunner/), this library provides a class for executing [PSR-15](https://www.php-fig.org/psr/psr-15) request handlers and emitting the generated [PSR-7](https://www.php-fig.org/psr/psr-7) response back to the waiting client. Differences from
the Zend library include:

- Requires an implementation of `Idiosyncratic\Http\Runner\ServerRequestFactory` to creates the initial PSR-7 `ServerRequestInterface` instance instead of accepting a callable
- Internally, uses [output buffering](https://www.php.net/manual/en/book.outcontrol.php) to suppress output to the client, including headers, until the final response is emitted. As a result, all headers and cookies (including for instance the PHP session cookie) must be set in the final `ResponseInterface` instance or they will not be sent to the client
- The interface for the response emitter (`Idiosyncratic\Http\Runner\ResponseEmitter`) is not stackable

Installation
------------

[](#installation)

Install using [Composer](https://getcomposer.org):

```
composer require idiosyncratic/http-runner

```

Usage
-----

[](#usage)

In order to user this library, you will need to provide:

- An implementation of `Idiosyncratic\Http\Runner\ServerRequestFactory` to create the initial PSR-7 `ServerRequestInterface` instance
- An implementation of `Psr\Http\Server\RequestHandlerInterface` to handle generating a response
- An implementation of `Idiosyncratic\Http\Runner\ResponseEmitter` to emit a PSR-7 `ResponseInterface` to the client. A basic `Idiosyncratic\Http\Runner\PhpSapiResponseEmitter` is included.
- An implementation of `Psr\Log\LoggerInterface` to log uncaught exceptions

```
use Idiosyncratic\Http\Runner\Runner;
use Idiosyncratic\Http\Runner\PhpSapiResponseEmitter;
use Psr\Log\NullLogger();

$runner = new Runner(
    $serverRequestFactoryImplementation,
    $requestHandlerImplementation,
    new PhpSapiResponseEmitter(),
    new NullLogger()
);

$runner->run();

```

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~110 days

Total

3

Last Release

2354d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0995074b7e20d6f5efab38a8e956a12dbaf93f8ef3592d11c5d884d631f8658a?d=identicon)[jcsilkey](/maintainers/jcsilkey)

---

Top Contributors

[![jcsilkey](https://avatars.githubusercontent.com/u/1775194?v=4)](https://github.com/jcsilkey "jcsilkey (12 commits)")

---

Tags

psr-7psr-15

### Embed Badge

![Health badge](/badges/idiosyncratic-http-runner/health.svg)

```
[![Health](https://phpackages.com/badges/idiosyncratic-http-runner/health.svg)](https://phpackages.com/packages/idiosyncratic-http-runner)
```

###  Alternatives

[cakephp/cakephp

The CakePHP framework

8.8k18.5M1.6k](/packages/cakephp-cakephp)[league/route

Fast routing and dispatch component including PSR-15 middleware, built on top of FastRoute.

6633.1M116](/packages/league-route)[phpro/http-tools

HTTP tools for developing more consistent HTTP implementations.

28137.8k](/packages/phpro-http-tools)[sunrise/http-router

A powerful solution as the foundation of your project.

16249.8k10](/packages/sunrise-http-router)[mezzio/mezzio-authentication-oauth2

OAuth2 (server) authentication middleware for Mezzio and PSR-7 applications.

28483.0k2](/packages/mezzio-mezzio-authentication-oauth2)[mezzio/mezzio-authentication

Authentication middleware for Mezzio and PSR-7 applications

121.6M26](/packages/mezzio-mezzio-authentication)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
