Laravel契约有哪些内置实现

wen PHP项目 1

本文目录导读:

Laravel契约有哪些内置实现

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

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

核心契约与实现

认证与授权

  • Illuminate\Contracts\Auth\GuardSessionGuard, TokenGuard
  • Illuminate\Contracts\Auth\PasswordBrokerPasswordBroker
  • Illuminate\Contracts\Auth\FactoryAuthManager
  • Illuminate\Contracts\Auth\Access\GateGate

缓存

  • Illuminate\Contracts\Cache\RepositoryCacheManager, RedisStore, FileStore, DatabaseStore
  • Illuminate\Contracts\Cache\FactoryCacheManager
  • Illuminate\Contracts\Cache\LockProviderRedisLock, DatabaseLock

日志

  • Illuminate\Contracts\Logging\LogLogManager
  • Psr\Log\LoggerInterfaceLogger

邮件

  • Illuminate\Contracts\Mail\MailerMailer
  • Illuminate\Contracts\Mail\MailQueueMailer

队列

  • Illuminate\Contracts\Queue\QueueDatabaseQueue, RedisQueue, SqsQueue, BeanstalkdQueue
  • Illuminate\Contracts\Queue\FactoryQueueManager
  • Illuminate\Contracts\Queue\ShouldQueue (无具体实现,标记接口)

数据库

  • Illuminate\Contracts\Database\ModelIdentifierModelIdentifier
  • Illuminate\Contracts\Database\Query\BuilderBuilder

文件系统

  • Illuminate\Contracts\Filesystem\FilesystemFilesystemAdapter
  • Illuminate\Contracts\Filesystem\CloudCloudFilesystemAdapter
  • Illuminate\Contracts\Filesystem\FactoryFilesystemManager

Redis

  • Illuminate\Contracts\Redis\FactoryRedisManager
  • Illuminate\Contracts\Redis\ConnectionPredisConnection, PhpRedisConnection

HTTP

  • Illuminate\Contracts\Http\KernelKernel
  • Illuminate\Contracts\Routing\RegistrarRouter
  • Illuminate\Contracts\Routing\ResponseFactoryResponseFactory
  • Illuminate\Contracts\Routing\UrlGeneratorUrlGenerator

视图与模板

  • Illuminate\Contracts\View\FactoryViewFactory
  • Illuminate\Contracts\View\ViewView

容器

  • Illuminate\Contracts\Container\ContainerContainer
  • Illuminate\Contracts\Container\BindingResolutionExceptionBindingResolutionException

事件

  • Illuminate\Contracts\Events\DispatcherEventDispatcher
  • Illuminate\Contracts\Broadcasting\BroadcasterBroadcastManager, RedisBroadcaster

配置

  • Illuminate\Contracts\Config\RepositoryConfigRepository

加密

  • Illuminate\Contracts\Encryption\EncrypterEncrypter
  • Illuminate\Contracts\Encryption\DecryptExceptionDecryptException

使用示例

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\ApplicationregisterCoreContainerAliases() 方法或服务提供者中注册。

// 在 CacheServiceProvider 中
$this->app->singleton('cache', function ($app) {
    return new CacheManager($app);
});
$this->app->singleton('cache.store', function ($app) {
    return $app['cache']->driver();
});

使用契约而非具体实现的优势:

  • 解耦:代码依赖于接口而非具体类
  • 可测试:容易使用 Mock 或替换实现
  • 灵活性:切换驱动时无需修改业务代码

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