假设我有一个使用2.0.0版本框架的应用程序,我想在同一个应用程序中使用版本2.1.x,无论如何。现在Zend可能会基于配置发生冲突,所以当你调用一个可能在2.0中的类时,你实际上可能会调用2.1.x中的那个(我们不想要这个,但是如果你尝试实例化自动加载器,我也是相信 - 未经测试 - Zend会说 - 这个类已经被实例化了。)
所以问题是,有没有办法说“嘿我已经实例化,设置或其他明智配置的Zend Framework 2.0?如果是这样,我们可以使用它,如果没有,让我们使用2.1.x”
我问这个是因为我想测试在同一个项目中运行多个版本的框架,比如zend,并让项目“智能地”根据框架的配置和实例化选择使用哪一个。
答案 0 :(得分:0)
据我所知,真正的问题是如何针对不同版本的Zend测试网站。
通常,Zend框架只是从客户端请求页面时PHP ini文件中指定的包含路径加载。
例如我在我的php.ini文件中的一个网站:
include_path = ".:/usr/local/zend/library"
并在我的index.php中:
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
这样 PHP引擎最终会在
中找到Autoloader.php/usr/local/zend/library/Zend/Loader/Autoloader.php
因此,对于不同的框架版本,您只需要不同的包含路径,以便在调用页面时,可以通过以下任一方式进行搜索:
/usr/local/ZendFramework-2.0/library/...
或
/usr/local/ZendFramework-2.1/library/...
至少有几种方法可以做到这一点:
根据一些外部参考,将index.php文件隐藏到调整 PHP包含路径。
(对于apache)根据某些外部引用将.htaccess文件破解为调整 PHP包含路径
就个人而言,我会选择方法#2并使用环境变量来确定设置了哪个PHP包含路径,因此您不会仅仅为了进行测试而更改网站代码。
答案 1 :(得分:0)
我可能会这样做:
class_exists('Zend\Version\Version');
从您的评论中听起来您可能正在尝试分发应用程序并希望将ZF与它捆绑在一起,但我建议不要这样做 - 只需让Composer为您处理所有这些。