php-standard-library/foundation
A lightweight PHP foundation library offering common building blocks and utilities to bootstrap projects. Provides reusable helpers and core abstractions to reduce boilerplate and standardize patterns across apps and packages.
Collection utilities, Result types, ValueObject patterns), it reduces Laravel-specific abstractions in core business logic, improving testability and portability.Illuminate\Support\Collection, Str, Arr). Overlap may require strategic adoption (e.g., preferring the package’s Result type over Laravel’s Illuminate\Support\MessageBag for error handling).composer.json autoload.psr-4) will be needed.PHPUnit, Pest). Mocking framework-specific dependencies (e.g., Illuminate\Contracts) may need adjustments.Illuminate\Support with package primitives (e.g., Collection → Foundation\Collection).vendor/bin utilities).Result types, ValueObject implementations).Arr::pluck() → Foundation\ArrayHelper::pluck()) in a non-critical module.Result monad for domain logic).composer.json for autoloading and aliases (if needed).config/app.php as a global service provider (if extending Laravel’s container).Foundation\LoggerInterface → Illuminate\Contracts\Logging\Logger).| Phase | Focus Area | Tools/Steps |
|---|---|---|
| Discovery | Identify reusable primitives | Codebase audit, dependency graph analysis |
| Pilot | Test in a single module | Replace 1–2 utilities, measure impact |
| Standardization | Enforce package conventions | PHPStan rules, custom linting |
| Core Integration | Migrate domain logic | Refactor services, update tests |
| Full Adoption | Replace Laravel built-ins | Gradual alias swaps, deprecation warnings |
composer update php-standard-library/foundation).phpunit --filter=FoundationTest).Result types instead of exceptions). Provide internal docs or workshops.Singleton facade).| Risk | Impact | Mitigation Strategy |
|---|---|---|
| Package Abandonment | Broken dependencies | Fork critical components, contribute upstream |
| Convention Conflicts | Inconsistent codebase | Enforce via CI (e.g., fail builds on violations) |
| Performance Regressions | Slow collection operations | Benchmark against Laravel’s built-ins |
| Laravel Version Mismatch | Compatibility issues | Test against Laravel’s LTS branches |
| Over-Engineering | Unnecessary complexity | Start with a minimal viable subset |
How can I help you explore Laravel packages today?