- Introduce small interfaces and default adapters (DIP): - Support\Contracts\ConfigInterface + Support\DefaultConfig - Http\Contracts\ErrorFormatNegotiatorInterface + Http\Support\DefaultErrorFormatNegotiator - Http\Contracts\RequestIdProviderInterface + Http\Support\DefaultRequestIdProvider - Http\Contracts\ExceptionToStatusMapperInterface + Http\Support\DefaultExceptionToStatusMapper - Kernel: bind new contracts in the container; keep DelegatingApiResponseFactory wiring - ContentNegotiationMiddleware: depend on ConfigInterface + negotiator; honor Accept for JSON:API - ProblemDetailsMiddleware: inject negotiator + config; split into small helpers; deterministic content negotiation; stable Whoops HTML; include X-Request-Id - DispatchMiddleware: SRP refactor into small methods; remove hidden coupling; normalize non-Response returns - Add/adjust tests: - tests/ErrorHandlingTest.php for problem details, JSON:API errors, and Whoops HTML - tests/ContentNegotiationTest.php for format selection - tests/MakeCommandTest.php aligned with create:command scaffolder - Docs/Meta: update README and MILESTONES; .gitignore to ignore .junie.json No runtime behavior changes intended beyond clearer DI boundaries and content-negotiation determinism. All tests green.
18 lines
362 B
PHP
18 lines
362 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Phred\Support;
|
|
|
|
use Phred\Support\Contracts\ConfigInterface;
|
|
|
|
/**
|
|
* Default adapter that delegates to the legacy static Config facade.
|
|
*/
|
|
final class DefaultConfig implements ConfigInterface
|
|
{
|
|
public function get(string $key, mixed $default = null): mixed
|
|
{
|
|
return Config::get($key, $default);
|
|
}
|
|
}
|