10.2 为什么使用插件?

插件实际上是由PHP定义的接口,接口规定了同类插件的标准。插件系统通过插件注解发现每一个实现了接口的类,并处理它们,并为插件类型提供一个工厂类。

插件和服务的区别:

1、插件

插件通过一个公共的接口实现不同的行为。例如,图像变换插件,一般有缩放、裁剪、去色等。每个变换类型以相同的方式接受一个图像,完成转换,返回转换后的图像。当然,每个变换的效果是不同的。

2、服务

服务提供相同的功能,并且是可交换的,不同点仅仅在于它们的内部实现。比如缓存,缓存应该提供获取(get)、设置(set)、过期(expire)等方法。用户只需要一个缓存,从一种缓存换成另一种缓存没有任何功能上的差别。至于缓存中的方法的实现机制用户是不会管的。

比如从apc改成redis,仅仅是缓存的内部实现机制需要变换。

所以缓存应该设计成一种服务。

  • 注意:通常来说,如果提供了一个UI想让用户进行配置,应该使用插件系统。

本书共79小节。


评论 (0)