manychois/php-strong

A utility library for PHP to help you write strong-typed code.

Maintainers

Package info

github.com/manychois/php-strong

pkg:composer/manychois/php-strong

Statistics

Installs: 19

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.0.1 2026-04-07 09:52 UTC

This package is auto-updated.

Last update: 2026-04-07 11:35:21 UTC


README

php-strong is a small PHP library that adds typed boundaries around places PHP is usually loose: nested arrays, the DI container, native sessions, and string matching. It does not replace the language type system; it gives you explicit, predictable APIs so invalid shapes fail at the edge (when you read a value or resolve a service) instead of far down the call stack.

It targets PHP 8.5+, uses the Manychois\PhpStrong namespace with PSR-4 autoloading, and integrates with PSR-7 (HTTP messages), PSR-17 (HTTP factories), PSR-11 (containers), and PSR-20 (clock) where relevant.

What’s in the box

  • Collections — Lazy and eager sequences (LazySequence), mutable lists (ArrayList), readonly list views (ReadonlyList), maps with typed keys (StringMap, IntMap, ObjectMap, and readonly variants), plus shared sequence/list interfaces and comparers for ordering. Suited to application code that wants clear generics-friendly collection APIs.

  • Typed array and object readingArrayReader (and ArrayReaderInterface) walk dot-separated paths and expose readers such as asInt, bool, string, object, and instanceOf so nested structures are validated when accessed.

  • PSR-11 containerStrongContainerInterface and StrongContainerWrapper wrap any Psr\Container\ContainerInterface and add getObject($id, $class) so resolved services are checked against an expected class or interface.

  • WebPSR-7 value objects: OutRequest, InRequest, Response, Stream, Uri, and UploadedFile, plus Method and StatusCode enums. PSR-17 factories: RequestFactory (requests and server requests), ResponseFactory, StreamFactory, UploadedFileFactory, and UriFactory. Sessions: PhpSession / PhpSessionInterface expose $_SESSION with the same path-style, validated access as ArrayReader, plus lifecycle helpers.

  • TimeUtcClock implements PSR-20’s clock in UTC, with support for deterministic tests (e.g. frozen instants).

  • TextRegex, MatchResult, Capture, and Utf8String offer an object-oriented, exception-oriented approach to pattern matching and UTF-8 strings; small helpers like StringSide and value types such as DayOfWeek live alongside them.

Why use it?

If you like C#- or Java-style rigor at API boundaries—without fighting PHP’s arrays and superglobals—php-strong narrows mixed early: fewer surprises in business logic and better alignment with static analysis (e.g. PHPStan) on downstream code.

Installation

composer require manychois/php-strong