我正在使用一个库Zend Framework,它有路径
ZendFramework-1.10.8/library/Zend/
我将它加载到index.php
中 realpath(CENTRAL_LIBS_PATH . '/ZendFramework-1.10.8/library'), // /Zend left out
因此可以使用Zend_Form_
现在我的问题是,如何使用同一个库的多个版本。我想我会加载index.php中的两个
realpath(CENTRAL_LIBS_PATH . '/ZendFramework-1.10.8/library'),
realpath(CENTRAL_LIBS_PATH . '/ZendFramework-2.0.0/library')
但是当我调用像Zend_Form
这样的类时,如何明确告诉它使用v1.10.8中的那个或v2.0.0中的那个?我记得在某个地方读过如果2个库有相同的类,上面的库就是那个叫做的库。但我如何随意在2之间切换?可以在同一个项目中完成吗?
答案 0 :(得分:2)
Zend Framework 2类在命名空间内分组,并有自己的自动加载器,可以查看目录(目录和命名空间之间的关系应该是1:1)。
您需要注册两个自动加载器(您可能需要重写ZF 1.10以使用SPL自动加载,以便您可以注册多个自动加载器。此时自动加载器应自行处理所有内容,因为ZF1将如何区别尝试加载Zend_Form,ZF2将尝试加载Zend \ Form。我可能会继续修改ZF1自动加载器以忽略任何使用真正的PHP名称空间的请求。
不要忘记,SPL自动加载使用FIFO方法查找类,因此如果您打算主要使用ZF2类,则应先注册其自动加载器,然后再注册ZF1,因为它会为您提供良好的性能提升。 / p>