本文目录导读:

Laravel 契约(Contracts)是框架核心接口的集合,定义了关键服务的约定,其内置实现主要对应框架的各个核心组件,以下是主要的契约及其具体实现类:
核心契约与实现
认证与授权
Illuminate\Contracts\Auth\Guard→SessionGuard,TokenGuardIlluminate\Contracts\Auth\PasswordBroker→PasswordBrokerIlluminate\Contracts\Auth\Factory→AuthManagerIlluminate\Contracts\Auth\Access\Gate→Gate
缓存
Illuminate\Contracts\Cache\Repository→CacheManager,RedisStore,FileStore,DatabaseStoreIlluminate\Contracts\Cache\Factory→CacheManagerIlluminate\Contracts\Cache\LockProvider→RedisLock,DatabaseLock
日志
Illuminate\Contracts\Logging\Log→LogManagerPsr\Log\LoggerInterface→Logger
邮件
Illuminate\Contracts\Mail\Mailer→MailerIlluminate\Contracts\Mail\MailQueue→Mailer
队列
Illuminate\Contracts\Queue\Queue→DatabaseQueue,RedisQueue,SqsQueue,BeanstalkdQueueIlluminate\Contracts\Queue\Factory→QueueManagerIlluminate\Contracts\Queue\ShouldQueue(无具体实现,标记接口)
数据库
Illuminate\Contracts\Database\ModelIdentifier→ModelIdentifierIlluminate\Contracts\Database\Query\Builder→Builder
文件系统
Illuminate\Contracts\Filesystem\Filesystem→FilesystemAdapterIlluminate\Contracts\Filesystem\Cloud→CloudFilesystemAdapterIlluminate\Contracts\Filesystem\Factory→FilesystemManager
Redis
Illuminate\Contracts\Redis\Factory→RedisManagerIlluminate\Contracts\Redis\Connection→PredisConnection,PhpRedisConnection
HTTP
Illuminate\Contracts\Http\Kernel→KernelIlluminate\Contracts\Routing\Registrar→RouterIlluminate\Contracts\Routing\ResponseFactory→ResponseFactoryIlluminate\Contracts\Routing\UrlGenerator→UrlGenerator
视图与模板
Illuminate\Contracts\View\Factory→ViewFactoryIlluminate\Contracts\View\View→View
容器
Illuminate\Contracts\Container\Container→ContainerIlluminate\Contracts\Container\BindingResolutionException→BindingResolutionException
事件
Illuminate\Contracts\Events\Dispatcher→EventDispatcherIlluminate\Contracts\Broadcasting\Broadcaster→BroadcastManager,RedisBroadcaster
配置
Illuminate\Contracts\Config\Repository→ConfigRepository
加密
Illuminate\Contracts\Encryption\Encrypter→EncrypterIlluminate\Contracts\Encryption\DecryptException→DecryptException
使用示例
use Illuminate\Contracts\Cache\Repository as CacheContract;
class ReportController {
public function index(CacheContract $cache) {
// 实际注入的是 CacheManager 或其底层实现
return $cache->remember('report', 3600, function() {
return $this->generateReport();
});
}
}
绑定关系
这些绑定通常在 Illuminate\Foundation\Application 的 registerCoreContainerAliases() 方法或服务提供者中注册。
// 在 CacheServiceProvider 中
$this->app->singleton('cache', function ($app) {
return new CacheManager($app);
});
$this->app->singleton('cache.store', function ($app) {
return $app['cache']->driver();
});
使用契约而非具体实现的优势:
- 解耦:代码依赖于接口而非具体类
- 可测试:容易使用 Mock 或替换实现
- 灵活性:切换驱动时无需修改业务代码
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播