如何在Zend Framework 2中为库使用自动加载类映射?

时间:2013-10-14 16:46:49

标签: zend-framework2 classloader autoload zend-autoloader

使用Zend Framework Tool (ZFTool)可以使应用程序更快,使用classmap-(而不是基于命名空间)的类加载(s。here)。

$ cd /path/to/my_project
$ cd module/MyModule/
$ zf classmap generate . ./autoload_classmap.php --overwrite

是否可能/如何对库模块(Zend库和自定义库)执行相同的操作?

2 个答案:

答案 0 :(得分:2)

类映射生成器不是特定于Zend命名空间下的类,它将为它找到的任何类生成一个类映射。您可以将路径传递给脚本,以使其搜索您的库文件夹:

  

zf classmap生成。 ./autoload_classmap.php --overwrite --library / path / to / my_project / library

有关参数的完整列表,请参阅the docs

答案 1 :(得分:1)

这样做实际上并不是有利的,因为自动加载文件会变得太大。我建议你使用Evan Coury提供的一个名为EdpSuperluminal的模块。

这个模块做了什么,它“记录”在给定请求中调用的所有类,并将它们写入类图文件。

本模块的唯一缺点是,您必须使用附加的特殊查询参数创建应用程序的每个可能的请求。这有点麻烦,但值得。通过这种方式,您可以将Classmap的大小减小到Zend Library以及实际使用的其他Vendor Libraries的大小。这样你的类图就不会过大。

除此之外,使用autoload_classmap.php目录上的标准/vendor实际上应该可以正常工作。

最后要注意的事情:由于你最有可能通过Composer包含库(Zend,Doctrine,其他......),因此Composer本身会创建一种类图,但仅限于供应商名称空间。 I.E“Zend”,“Doctrine”,“Mongo”等。由于上述推理,Composer为顶级命名空间执行此操作。