从5.2.x到5.3.14的PHP更新导致了Locale问题

时间:2012-09-13 11:13:40

标签: php pear

我们的服务器最近完成了更新(PHP已从5.2.x更新到5.3.14) 由于此更新,我们无法使用由__autoload()运行的自定义Locale类 根据我的理解,这是由一个Locale类在“PEAR”

中存在的某些地方引起的

我有没有办法解决这个冲突问题,而无需将我的类名从Locale更改为其他东西(基本上有些人如何强制PEAR语言环境不加载或仅为Locale请求忽略它)?

由于

1 个答案:

答案 0 :(得分:1)

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

解决方案:

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

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

  3. 使用PHP 5.3的命名空间功能为您的Locale类提供与内置Locale类不同的命名空间。将namespace子句添加到类文件的顶部,并在{@ 1}}命名空间中引用您的Locale类而不是内置类。

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