1: <?php
2:
3: namespace LaravelUi5\Core\Contracts;
4:
5: use Illuminate\Http\Request;
6:
7: /**
8: * Interface TenantResolverInterface
9: *
10: * Defines the mechanism for resolving a Tenant instance.
11: *
12: * This abstraction decouples Core from any concrete Tenant model or storage mechanism.
13: * Applications can provide their own resolver implementation and register it
14: * in the ui5.php configuration.
15: *
16: * Configuration example (`config/ui5.php`):
17: *
18: * 'tenant_resolver' => \App\Resolvers\MyTenantResolver::class,
19: *
20: * A default fallback resolver is provided in Core that always returns `null`.
21: */
22: interface TenantResolverInterface
23: {
24: /**
25: * Resolve a Tenant instance.
26: *
27: * @param Request $request
28: * @return TenantInterface|null
29: */
30: public function resolve(Request $request): ?TenantInterface;
31: }
32: