PHP

Thinwrap publishes two PHP packages on Packagist. The claims below hold for PHP only — honest about the PSR-17/18 interface deps and the cosign-signed-GitHub-release provenance posture Packagist permits.

PHP constraints

Runtime dependencies
php-http/discovery, psr/http-client, psr/http-factory
BYO HTTP client
consumer-supplied PSR-18 client via php-http/discovery
Provenance
cosign-signed GitHub Release artifacts
Minimum runtime
PHP 8.2+
  • PSR-17/PSR-18 discovery is auto-detected; consumers can also pass clients explicitly

PHP packages

Baseline-coverage discipline

The unified facade surface includes only features that ≥90% of providers natively support. Sub-baseline fields stay accessible via the _passthrough escape valve and per-provider augmented config DTOs. Cross-language parity with the TypeScript packages is tracked as a design goal — not a hard release gate — so a connector can land in one language ahead of the other.

The wrapper holds no state — retry strategy, token caching, and the PSR-18 client lifecycle stay with the consumer. The wrapper performs no automatic retry; Retry-After headers (when present on HTTP 429) are parsed intoConnectorError->providerMessage and the raw header is available on the $e->cause payload. There isno structured retryAfterSeconds field on ConnectorError — by design.