- Added RegistryKeys constants.
- Added ProblemDetails class for standardized error responses (RFC 7807)
- Adds additional http code based events.
- Added system abstractions for improved testability across the framework
- IClock interface with
RealClockandFrozenClockimplementations - enables instant, deterministic time-based testing (no more sleep!) - IRandom interface with
RealRandom(cryptographically secure) andFakeRandom(predictable) implementations - enables deterministic random value testing - IHttpClient/IHttpResponse interfaces with
RealHttpClient(curl-based) andMemoryHttpClient(in-memory) implementations - enables HTTP testing without external dependencies - ISession interface with
RealSession($_SESSION wrapper) andMemorySession(in-memory) implementations - enables isolated session testing - All abstractions fully tested with 122 comprehensive tests
- Time-dependent tests now run 200-250x faster using FrozenClock
- Used by MVC FileCacheStorage, Routing RateLimitStorage, and CMS CsrfToken
- Extended IFileSystem with directory operations:
mkdir(),rmdir(),scandir(), andunlink()for comprehensive file system abstraction - Enables full testability of file-dependent code across the framework
- Used by MVC FileCacheStorage for complete in-memory testing
- Added file system abstractions:
IFileSystem,RealFileSystem,MemoryFileSystem - Core methods:
fileExists(),readFile(),writeFile(),isDir(),realpath(),getcwd() - Provides testable abstraction over PHP native file functions
- Enables components to be unit tested without touching real file system
- Added pascalCase, toUpper and toLower functions to NString.
- Conversion to camelcase.
- Initial version.