对框架进行扩展
介绍
Laravel 为你提供了很多可扩展的地方, 通过它们你可以定制框架中一些核心组件的行为,甚至对这些核心组件进行全部替换。 例如, 哈希组件是在 "HaserInterface" 接口中被定义的,你可以根据应用程序的需求来选择是否实现它。 你也可以扩展 "Request" 对象来添加专属你的"帮助"方法。你甚至可以添加全新的 用户验证,缓存以及会话(Session) 驱动!
Laravel 的组件通常以两种方式进行扩展:在IoC容器中绑定新的实现,或者为一个扩展注册一个 "Manager" 类,第二种方式运用了设计模式中"工厂"的理念。在这一章中,我们会探索扩展框架的各种方法以及查看一些具体的实现代码。
注意
请记住,Laravel 组件的扩展通常使用以下两种方法的其中一种实现的:IoC绑定和 "Manager" 类。 Manager类充当实现工厂模式的作用,它负责缓存、会话(Session)等基本驱动的实例化工作。
管理者 & 工厂
Laravel 有几个 "Manager" 类 ,用来管理一些基本驱动组件的创建工作。 包括 缓存、会话(Session)、用户验证以及队列组件。"Manager"类负责根据应用程序中相关配置来创建一个驱动实现。例如,"CacheManager"类可以创建 APC、Memcached、Native 以及其他各种缓存驱动的实现。 每一个Manager类都包含有一个"extend"方法,通过它可以轻松的将新驱动中的解决方案和功能注入到Manager中。下面,我们会通过列举一些向Manager中注入定制驱动的例子来依次对它们进行说明。