Laravel契约有哪些内置实现

wen PHP项目 217

本文目录导读:

Laravel契约有哪些内置实现

  1. 核心契约与实现
  2. 使用示例
  3. 绑定关系

Laravel 契约(Contracts)是框架核心接口的集合,定义了关键服务的约定,其内置实现主要对应框架的各个核心组件,以下是主要的契约及其具体实现类:

核心契约与实现

认证与授权

  • Illuminate\Contracts\Auth\Guard → SessionGuard, TokenGuard
  • Illuminate\Contracts\Auth\PasswordBroker → PasswordBroker
  • Illuminate\Contracts\Auth\Factory → AuthManager
  • Illuminate\Contracts\Auth\Access\Gate → Gate

缓存

  • Illuminate\Contracts\Cache\Repository → CacheManager, RedisStore, FileStore, DatabaseStore
  • Illuminate\Contracts\Cache\Factory → CacheManager
  • Illuminate\Contracts\Cache\LockProvider → RedisLock, DatabaseLock

日志

  • Illuminate\Contracts\Logging\Log → LogManager
  • Psr\Log\LoggerInterface → Logger

邮件

  • Illuminate\Contracts\Mail\Mailer → Mailer
  • Illuminate\Contracts\Mail\MailQueue → Mailer

队列

  • Illuminate\Contracts\Queue\Queue → DatabaseQueue, RedisQueue, SqsQueue, BeanstalkdQueue
  • Illuminate\Contracts\Queue\Factory → QueueManager
  • Illuminate\Contracts\Queue\ShouldQueue (无具体实现,标记接口)

数据库

  • Illuminate\Contracts\Database\ModelIdentifier → ModelIdentifier
  • Illuminate\Contracts\Database\Query\Builder → Builder

文件系统

  • Illuminate\Contracts\Filesystem\Filesystem → FilesystemAdapter
  • Illuminate\Contracts\Filesystem\Cloud → CloudFilesystemAdapter
  • Illuminate\Contracts\Filesystem\Factory → FilesystemManager

Redis

  • Illuminate\Contracts\Redis\Factory → RedisManager
  • Illuminate\Contracts\Redis\Connection → PredisConnection, PhpRedisConnection

HTTP

  • Illuminate\Contracts\Http\Kernel → Kernel
  • Illuminate\Contracts\Routing\Registrar → Router
  • Illuminate\Contracts\Routing\ResponseFactory → ResponseFactory
  • Illuminate\Contracts\Routing\UrlGenerator → UrlGenerator

视图与模板

  • Illuminate\Contracts\View\Factory → ViewFactory
  • Illuminate\Contracts\View\View → View

容器

  • Illuminate\Contracts\Container\Container → Container
  • Illuminate\Contracts\Container\BindingResolutionException → BindingResolutionException

事件

  • Illuminate\Contracts\Events\Dispatcher → EventDispatcher
  • Illuminate\Contracts\Broadcasting\Broadcaster → BroadcastManager, RedisBroadcaster

配置

  • Illuminate\Contracts\Config\Repository → ConfigRepository

加密

  • Illuminate\Contracts\Encryption\Encrypter → Encrypter
  • Illuminate\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 或替换实现
  • 灵活性:切换驱动时无需修改业务代码

抱歉,评论功能暂时关闭!

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝