ZF2 使用 Composer 进行包管理和分发。我的问题是,它是否比 Zend Loader 提供任何性能提升?
1 回答
首先,Zend\Loader
只是命名空间,并在引擎盖下呈现多个类,如工厂、自动加载器、插件加载器、模块加载器等......所以,Zend Loader
!==Composer
和比较不同的概念通常是错误的。
第二件事是,composer 不是“包管理器”,您可以在没有 composer 的情况下使用 ZF2。从文档中:
Composer 不是包管理器。是的,它处理“包”或库,但它在每个项目的基础上管理它们,将它们安装在项目内的目录(例如供应商)中。默认情况下,它永远不会在全局范围内安装任何东西。因此,它是一个依赖管理器。
composer 主要关心的是在库之间提供简单的依赖管理,标准化自动加载过程等。而不是性能。它还为您的项目准备了一个自动加载文件,用于由 composer 安装的 3rd 方库中的所有类。这让我们的生活更美好。
另一方面,Zend Loader 命名空间和相关类。官方文档中的这个简短摘要非常简单:
ZF2 采用多种自动加载策略;例如,您可能有一个用于最常用类的类映射,但想为 3rd 方库使用 PSR-0 样式的自动加载器。
关于 Zend Loader 命名空间下的类的简短摘要:
- ClassMapAutoloader:它的设计考虑到了性能。自动加载时避免不必要的文件系统操作。
- StandardAutoloader:这是一个符合 PSR-0 的自动加载器。假设命名空间 + 类名到文件系统的 1:1 映射。
- ModuleAutolader : Zend\Loader\SplAutoloader 接口的一个特殊实现,被 Zend\ModuleManager 用来从不同的源自动加载 Module 类。
- PluginClassLoader:通过提供一种简单的机制将插件名称别名为类名以供以后检索,从而解析插件名称 -> 到 -> 类名。
因此,如果您主要关心的是文件系统级别的性能,那么您应该关注类映射自动加载和操作码缓存。有很多指标会影响整体应用程序性能,并且没有灵丹妙药可以提高性能。