Download the PHP package jerome/fetch-php without Composer

On this page you can find all versions of the php package jerome/fetch-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package fetch-php

Fetch PHP

Latest Version on Packagist CI Codecov CodeQL PHPStan PHP Version License Total Downloads GitHub Stars

Fetch PHP is a modern HTTP client library for PHP that brings JavaScript's fetch API experience to PHP. Built on top of Guzzle, Fetch PHP allows you to write HTTP code with a clean, intuitive JavaScript-like syntax while still maintaining PHP's familiar patterns.

With support for both synchronous and asynchronous requests, a fluent chainable API, and powerful retry mechanics, Fetch PHP streamlines HTTP operations in your PHP applications.

Full documentation can be found here


Key Features

Why Choose Fetch PHP?

Beyond Guzzle

While Guzzle is a powerful HTTP client, Fetch PHP enhances the experience by providing:

Feature Fetch PHP Guzzle
API Style JavaScript-like fetch + async/await + PHP-style helpers PHP-style only
Client Management Global client + instance options Instance-based only
Request Syntax Clean, minimal More verbose
Types Modern PHP 8.3+ enums String constants
Helper Functions Multiple styles available Limited

Installation

Requirements: PHP 8.3 or higher

Basic Usage

JavaScript-style API (Promise Chaining)

Or, using the client handler for more control:

PHP-style Helpers

Fluent API

Async/Await Pattern

Note: The async functions (async, await, all, race, map, batch, retry) are provided by the jerome/matrix library, which is included as a dependency.

Using Async/Await

Multiple Concurrent Requests with Async/Await

Sequential Requests with Async/Await

Error Handling with Async/Await

Traditional Promise-based Pattern

Advanced Async Usage

Concurrent Requests with Promise Utilities

Controlled Concurrency with Map

Batch Processing

With Retries

Advanced Configuration

Automatic Retries

Fetch PHP automatically retries transient failures with exponential backoff.

Configure per-request:

Notes:

Authentication

Proxies

Global Client Configuration

Working with Responses

php use Fetch\Enum\Method; use Fetch\Enum\ContentType; use Fetch\Enum\Status;

// Use enums for HTTP methods $client = fetch_client(); $response = $client->request(Method::POST, '/users', $userData);

// Check HTTP status with enums if ($response->statusEnum() === Status::OK) { // Process successful response }

// Or use the isStatus helper if ($response->isStatus(Status::OK)) { // Process successful response }

// Content type handling $response = $client->withBody($data, ContentType::JSON)->post('/users');



## Error Handling

### Timeouts

Control both total request timeout and connection timeout:

If `connect_timeout` is not provided, it defaults to the `timeout` value.

### Logging and Redaction

When request/response logging is enabled via a logger, sensitive values are redacted:

- Headers: Authorization, X-API-Key, API-Key, X-Auth-Token, Cookie, Set-Cookie
- Options: `auth` credentials

Logged context includes method, URI, selected options (sanitized), status code, duration, and content length.

## Caching (sync-only)

> **Note:** Caching is available for synchronous requests only. Async requests intentionally bypass the cache.

Fetch PHP implements RFC 7234-aware HTTP caching with ETag/Last-Modified revalidation, `stale-while-revalidate`, and `stale-if-error` support. The default backend is an in-memory cache (`MemoryCache`), but you can use `FileCache` or implement your own backend via `CacheInterface`.

### Cache Behavior

- **Cacheable methods by default**: `GET`, `HEAD`
- **Cacheable status codes**: 200, 203, 204, 206, 300, 301, 404, 410 (RFC 7234 defaults)
- **Cache-Control headers respected**: `no-store`, `no-cache`, `max-age`, `s-maxage`, etc.
- **Revalidation**: Automatically adds `If-None-Match` (ETag) and `If-Modified-Since` (Last-Modified) headers for stale entries
- **304 Not Modified**: Merges headers and returns cached body
- **Vary headers**: Supports cache variance by headers (default: Accept, Accept-Encoding, Accept-Language)

### Basic Cache Setup

### Advanced Cache Configuration

### Per-Request Cache Control

## Connection Pooling & HTTP/2

Connection pooling enables reuse of TCP connections across multiple requests, reducing latency and improving performance. The pool is **shared globally** across all handler instances, and includes DNS caching for faster lookups.

### Enable Connection Pooling

### Enable HTTP/2

### Pool Management

> **Note**: The connection pool is static/global and shared across all handlers. Call `resetPool()` in your test teardown to ensure isolation between tests.

## Debugging & Profiling

Enable debug snapshots and optional profiling:

## Testing Support

Fetch PHP includes built-in testing utilities for mocking HTTP responses:

## Advanced Response Features

### Response Status Checks

### Response Helpers

## Connection Pool Management

Clean up connections or reset the pool (useful in tests):

## Async Notes

- Async requests use the same pipeline (mocking, profiling, logging) but bypass caching by design.
- Matrix helpers (`async`, `await`, `all`, `race`, `map`, `batch`, `retry`) are re-exported in `Fetch\Support\helpers.php`.
- Errors are wrapped with method/URL context while preserving the original exception chain.
- Use `$handler->async()` to enable async mode, or use the Matrix async utilities directly.

## License

This project is licensed under the **MIT License** – see the [LICENSE](LICENSE) file for full terms.

The MIT License allows you to:

- Use the software for any purpose, including commercial applications
- Modify and distribute the software
- Include it in proprietary software
- Use it without warranty or liability concerns

This permissive license encourages adoption while maintaining attribution requirements.

## Contributing

Contributions are welcome! We're currently looking for help with:

- Expanding test coverage
- Improving documentation
- Adding support for additional HTTP features

To contribute:

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/amazing-feature`)
3. Commit your Changes (`git commit -m 'Add some amazing-feature'`)
4. Push to the Branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## Acknowledgments

- Thanks to **Guzzle HTTP** for providing the underlying HTTP client
- Thanks to all contributors who have helped improve this package
- Special thanks to the PHP community for their support and feedback

All versions of fetch-php with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
ext-pcntl Version *
guzzlehttp/guzzle Version ^7.9
guzzlehttp/psr7 Version ^2.7
jerome/matrix Version ^3.4
psr/http-message Version ^1.0|^2.0
psr/log Version ^1.0|^2.0|^3.0
react/event-loop Version ^1.5
react/promise Version ^3.2
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package jerome/fetch-php contains the following files

Loading the files please wait ...