是否有可能看到Zend Framework是否被实例化?

时间:2013-11-19 22:04:24

标签: php zend-framework

假设我有一个使用2.0.0版本框架的应用程序,我想在同一个应用程序中使用版本2.1.x,无论如何。现在Zend可能会基于配置发生冲突,所以当你调用一个可能在2.0中的类时,你实际上可能会调用2.1.x中的那个(我们不想要这个,但是如果你尝试实例化自动加载器,我也是相信 - 未经测试 - Zend会说 - 这个类已经被实例化了。)

所以问题是,有没有办法说“嘿我已经实例化,设置或其他明智配置的Zend Framework 2.0?如果是这样,我们可以使用它,如果没有,让我们使用2.1.x”

我问这个是因为我想测试在同一个项目中运行多个版本的框架,比如zend,并让项目“智能地”根据框架的配置和实例化选择使用哪一个。

2 个答案:

答案 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/...  

至少有几种方法可以做到这一点:

  1. 根据一些外部参考,将index.php文件隐藏到调整 PHP包含路径。

  2. (对于apache)根据某些外部引用将.htaccess文件破解为调整 PHP包含路径

  3. 就个人而言,我会选择方法#2并使用环境变量来确定设置了哪个PHP包含路径,因此您不会仅仅为了进行测试而更改网站代码。

答案 1 :(得分:0)

我可能会这样做:

class_exists('Zend\Version\Version');

从您的评论中听起来您可能正在尝试分发应用程序并希望将ZF与它捆绑在一起,但我建议不要这样做 - 只需让Composer为您处理所有这些。