0

我们的服务器最近完成了更新(PHP 从 5.2.x 更新到 5.3.14)由于此更新,我们无法使用由 __autoload() 运行的自定义 Locale 类 据我了解,这是由现有的 Locale 类引起的“梨”中的一些地方

有没有办法让我在不将我的类名从 Locale 更改为其他名称的情况下解决这个冲突问题(基本上是一些如何强制 PEAR 语言环境不加载或仅针对 Locale 请求忽略它)?

谢谢

4

1 回答 1

1

由于Locale现在是原生 PHP 类,因此您无法直接覆盖它,这就是您的代码不再有效的原因。

解决方案:

  1. 重建您的 PHP 副本,使其不包含 Locale 模块。可能不是一个好主意,而且绝对不利于兼容性,但如果你很绝望,可以考虑。

  2. 重命名您的班级。有一些重构工具可以使这类事情变得相当容易。

  3. 使用 PHP 5.3 的命名空间功能为您的 Locale 类提供与内置 Locale 类不同的命名空间。将命名空间子句添加到类文件的顶部,并将use命名空间添加到要引用 Locale 类而不是内置类的任何位置。

2 和 3 之间的选择取决于您。我建议 2,因为您的类在功能上可能与 PHP 不相似,因此您需要远离它。但是,如果您想保留当前的类名,命名空间解决方案也是一种选择。

于 2012-09-13T12:27:43.347 回答