boson-php/http-contracts
Lightweight PHP contracts for HTTP clients, requests, responses, and middleware. Provides stable interfaces to decouple your app from конкрет implementations, making it easier to swap HTTP libraries, mock in tests, and share consistent types across packages.
Illuminate\Contracts (e.g., HttpKernelContract).FormRequest validation?| Risk Area | Assessment |
|---|---|
| Adoption Risk | Low stars (0) and unknown repo suggest unproven stability. May lack community support. |
| Compatibility | Unknown PHP/Laravel version support. Risk of breaking changes if not actively maintained. |
| Overhead | If contracts are too rigid, may conflict with Laravel’s dynamic routing. |
| Testing | No visible test suite or benchmarks → unknown performance impact. |
| License | MIT is permissive, but no upstream (Boson) context raises questions about long-term viability. |
FormRequest?FormRequest classes?FormRequest/API Resource classes./api/v1/users).FormRequest with package’s contract system and test.| Component | Compatibility Check |
|---|---|
| Laravel Service Container | Can contracts be resolved via DI? (e.g., bind(HttpContract::class, ...)) |
| Middleware Pipeline | Does it integrate with Laravel’s $middleware or $routeMiddleware? |
| Validation | Does it extend Laravel’s validator or replace it? |
| Routing | Can it work with API routes (Route::apiResource) without conflicts? |
| Testing | Does it support Pest/Laravel’s testing helpers (e.g., actingAs())? |
use Boson\Http\Contracts\RequestContract;
class StoreUserRequest implements RequestContract {
public function rules(): array { ... }
public function authorize(): bool { ... }
}
public function handle($request, Closure $next) {
$contract = app(RequestContract::class);
if (!$contract->validate($request)) {
abort(422, $contract->errors());
}
return $next($request);
}
phpunit --group contracts).| Scenario | Impact | Mitigation |
|---|---|---|
| Contract Mismatch | API consumers get 500 errors if contracts change. | Use deprecation periods. |
| Validation Overhead | Slow responses under load. | Optimize with caching. |
| Package Abandonment | No updates → security/bug risks. | Fork or find alternatives. |
| Laravel Version Conflict | Breaks if package doesn’t support Laravel 10+. | Test on LTS versions. |
FormRequest vs. contract.How can I help you explore Laravel packages today?