【问题标题】:Is Zend Framework 1 compatible with PHP 7.2?Zend Framework 1 与 PHP 7.2 兼容吗?
【发布时间】:2025-12-27 12:50:16
【问题描述】:

我有一个在 Zend Framework 1 中构建的项目。使用 PHP 到 7.1,它可以正常工作。当我在其中一台测试服务器上升级 PHP 时,它显示了一个内部错误:

致命错误:Zend_Rest_Route::assemble($data = Array, $reset = false, $encode = true) 的声明必须与 Zend_Controller_Router_Route_Module::assemble($data =数组,$reset = false, $encode = true, $partial = false) 在 /public_html/library/Zend/Rest/Route.php 第 52 行

看来这两个类都属于框架。安装的ZF1版本是1.12.18。

是否有兼容 PHP 7.2 的 ZF1 版本?还是为了保持兼容性,升级到 ZF2 是不可避免的?

【问题讨论】:

  • ZF1 与 PHP7 兼容,正如您在 this answer 中看到的那样,但似乎 PHP 7.2 在许多项目中打破了向后兼容性。在您的情况下,Zend_Controller_Router_Route_Module 中的声明有一个参数不在 Zend_Rest_Route 中的声明中

标签: php zend-framework compatibility


【解决方案1】:

Zend Framework 1 已经到了生命的尽头,但已经完成了一些分叉。 Shardj 的一个与 PHP 7.3 兼容。

【讨论】:

  • 哦该死的哈哈,因为这篇文章我做了那个repo,现在它已经完成了一个完整的循环
  • @Shardj 你让我开心哈哈!你的回购很棒,可能帮助了很多人!感谢您开始这个圈子!
【解决方案2】:

是的,这个错误是由 PHP 的继承模型的紧缩引起的,所以如果框架代码在 PHP 7.2 中出现这个错误,那么答案是框架与 7.2 不兼容,至少在没有修复这个问题的情况下是这样(和其他类似的)错误。

这个错误看起来肯定会妨碍您,而且 Zend 1 不再维护,所以我想简单的答案是您将不得不升级 Zend 或不升级 PHP。

您的另一种选择是自己分叉 Zend 并修复兼容性问题。或者可能会有其他做过同样事情的人进行社区分叉。我真的不建议这样做。在某些时候,您将不得不硬着头皮升级;离开的时间越长越难做,所以你最好现在就去做。

【讨论】:

  • 感谢您的回答。第 2 版目前稳定吗?
  • @TimSparrow version 3 is stable。所以是的,第 2 版也很稳定。
  • 我的 ZF 1.12 版本在 PHP 7.2.6 版本上运行良好。我还有一些 ZF 1.11 版本在 php 7.2.6 上运行不正常。这就是我来这里的原因。