PHPackages                             balintsera/exphpress - 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. [Framework](/categories/framework)
4. /
5. balintsera/exphpress

ActiveLibrary[Framework](/categories/framework)

balintsera/exphpress
====================

A react php clone of the famous Express framework.

30PHPCI failing

Since Mar 3Pushed 6y ago2 watchersCompare

[ Source](https://github.com/balintsera/exphpress)[ Packagist](https://packagist.org/packages/balintsera/exphpress)[ RSS](/packages/balintsera-exphpress/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (3)Used By (0)

exphpress
=========

[](#exphpress)

Exphpress (pronounced as 'exfress') is a PHP clone of the famous Node.js framework, Express. The goal is a 80% api compatibility with it.

It's just a hobby project for fun, but it can be useful if you need your well-known Express.js and async scalability.

It's already faster then a default Laravel install by more than 9000 times.

Yes, it's more than *9000 times*. 🚀🚀🚀🚀

The reason is simple: while Laravel and every other frameworks by the way die after every request, Exphpress runs continuously and doesn't need to recompile and rerun everything when a request comes in.

And it's only 4 times slower then Express.js and I'll make everything that's possible to gain upon it.

Supported API calls
-------------------

[](#supported-api-calls)

Node.js:

```
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => res.send('Hello World!'))

app.use(function (req, res, next) {
  console.log('Example middleware')
  next()
})

app.listen(port, () => console.log(`Example app listening on port ${port}!`))
```

and the same in PHP:

```
$app = new \Exphpress\App();
$port = 8080;

$app->get('/hello', function (ServerRequestInterface $request) {
    return new Response(
        200,
        array(
            'Content-Type' => 'text/plain'
        ),
        'Hello World!'
    );
});

$app->use(function (ServerRequestInterface $request, callable $next) {
    error_log("example middleware");
    return $next($request);
});

$app->listen($port);
```

Run / Install
-------------

[](#run--install)

```
composer require balintsera/exphpress
```

Then organize your project the way you want, all the framework files are located in this package.

Because it has some special needs, like libuv and a pecl extension that wraps libuv, I recommend to use this dockerfile to build and run the example above.

```
FROM php:7.4-cli
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update \
    && apt-get install -y libuv1-dev

RUN pecl install uv-0.2.4 \
    && docker-php-ext-enable uv

# install and run composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer install --no-dev

CMD [ "php", "./app.php" ]
```

You can utilize this for development too with docker-compose:

```
version: "3"
services:
  exphpress:
    build: .
    ports:
      - 8080:8080
    volumes:
    - ./app.php:/usr/src/app/app.php
```

If you share the source of your app as volumes, you won't need to rebuild the image on every change (but the container still needs to be restarted).

All credits goes to the people who wrote reactPHP and all the other dependencies. Kudos.

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/0ab3f9b98b8874849b833ccc3b0dd415d8b116654b319d17e687c218e9021e87?d=identicon)[balintsera](/maintainers/balintsera)

---

Top Contributors

[![balintsera](https://avatars.githubusercontent.com/u/8377085?v=4)](https://github.com/balintsera "balintsera (5 commits)")

### Embed Badge

![Health badge](/badges/balintsera-exphpress/health.svg)

```
[![Health](https://phpackages.com/badges/balintsera-exphpress/health.svg)](https://phpackages.com/packages/balintsera-exphpress)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

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