我正在尝试将当前项目从1.7更新为1.8。我需要改变什么才能不破坏?

有帮助吗?

解决方案

大多数功能仍可用于旧代码。在您的测试环境中试用它并阅读ZF更改日志。一件重要的事情是装载机现在的工作方式不同。特别是如果你使用自动加载。

直到1.7

require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

自1.8起

require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Namespace_');

其他提示

简答:
运行测试套件并检查结果;)

答案很长:
我记得向后兼容性被打破的两点:

  1. 如果您的引导没有正确设置Zend_Locale,ZF> = 1.7.2将抛出一个异常,如果您通过 console 运行脚本,它无法检测到浏览器Locale。 / p>

  2. Zend_View在1.7.5中发生变化

在Zend Framework 1.8中,修改了Zend_Controller_Action的构造函数。

我必须提到这一点,因为它破坏了我的应用程序,直到我在调试数小时后发现这个错误(由于某种原因xDebug和PHP本身向我显示我的自定义Controller_Action类中的构造函数与Zend_Controller_Action中的构造函数不同)。

所以必须从

更改构造函数
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, $invokeArgs = array())

public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array())
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top