Skip to the guide
All guides

Install

Add Reqtide to a Composer project with Composer from Packagist, or run the examples in Docker without installing PHP.

app Reqtide PHP 0.1.0checked reading 4 minutes

On this page

Reqtide 0.1.0 is a beta: the API can change between minor versions, and every change is listed in the changelog. The three packages are released with the same version number. Install them with Composer from Packagist:

Bash
composer require enaxon/reqtide
composer require enaxon/reqtide-redis    # state shared by several PHP processes
composer require enaxon/reqtide-guzzle   # protections around Guzzle requests

Each add-on requires exactly the same version of enaxon/reqtide. The rest of this guide shows how to install from a clone, which is meant for contributors.

What works today

RouteStatusNotes
PackagistWorksChecked on 2026-10-15 with Composer 2.8.12 on PHP 8.3.35, 8.4.26 and 8.5.11 in Docker: the three packages at 0.1.0 install from Packagist in an empty directory, also with --prefer-lowest.
Composer path repository, from a cloneWorksFor contributors. See the section below.
PHP 8.3, 8.4, 8.5Checked in DockerCommand line only.
PHP-FPM, Apache, other web serversPHP-FPM: three CI lanes (PHP 8.3, 8.4 and 8.5, nginx, six workers). Others: not runState stays inside one PHP process. Read Limits before you use Reqtide in a web request.
Install routes and their status.

Requirements

  • PHP 8.3 or newer on a 64-bit build.
  • Composer 2.
  • No other runtime packages for the core. Its composer.json requires only php and php-64bit.

The two add-on packages need more. enaxon/reqtide-redis needs ext-openssl and Predis 3.7. enaxon/reqtide-guzzle needs ext-curl and Guzzle 7.15.5 or newer.

Install from a clone

Step 1: Clone the repository

Clone it next to your project:

Bash
git clone https://github.com/ehsanenaloo/reqtide.git

Step 2: Register the clone as a path repository

Add the repositories to the composer.json of your project. The core lives at the root of the clone. The Redis and Guzzle packages live in packages/redis and packages/guzzle. Set symlink to false so Composer copies each package into vendor/.

JSON
{
    "repositories": [
        { "type": "path", "url": "../reqtide", "options": { "symlink": false } },
        { "type": "path", "url": "../reqtide/packages/redis", "options": { "symlink": false } },
        { "type": "path", "url": "../reqtide/packages/guzzle", "options": { "symlink": false } }
    ]
}

You need only the first line for the core. Add the other two when you want the Redis or Guzzle package.

Step 3: Require the packages

Bash
composer require "enaxon/reqtide:@dev" "enaxon/reqtide-redis:@dev" "enaxon/reqtide-guzzle:@dev"

Leave out the packages you do not need. The add-on packages need the same version of the core, so install them together.

The vendor name is enaxon. A different Packagist vendor, naxon, is one letter away. Copy the package name exactly.

The core package enaxon/reqtide holds the library (Enaxon\Reqtide) and the test helpers (Enaxon\Reqtide\Testing). The helpers are for tests only. See Testing with the virtual clock.

Try it without installing PHP

With Docker you can run the examples inside the clone. You need no PHP or Composer on your machine:

Bash
cd reqtide
docker compose -f tools/docker/compose.yaml run --rm php83 composer install
docker compose -f tools/docker/compose.yaml run --rm php83 php examples/06-getting-started.php

The output is:

Text
ok on attempt 3
invocations: 3

Use php84 or php85 in place of php83 to try the other PHP versions.

Check that it works

Create demo.php in your project with the script from Getting started and run it:

Bash
php demo.php

You should see the two lines above. If PHP reports that the class Enaxon\Reqtide\Pipeline\PipelineBuilder is not found, the autoloader line is missing or points to the wrong vendor/ folder. If Composer cannot find enaxon/reqtide, check the url of the path repository.

Next

Getting started builds your first pipeline. Limits lists what version 0.x does not do.