PHP从5.2.x更新到5.3.14导致了区域设置问题
我们的服务器最近进行了更新(PHP从5.2.x更新到5.3.14) 由于此更新,我们无法使用由uu autoload()运行的自定义语言环境类 据我所知,这是由于“PEAR”中的某个位置存在一个Locale类造成的 有没有一种方法可以解决这个冲突问题,而不用将我的类名从Locale更改为其他名称(基本上是如何强制PEAR Locale不加载或仅为Locale请求而忽略它)PHP从5.2.x更新到5.3.14导致了区域设置问题,php,pear,Php,Pear,我们的服务器最近进行了更新(PHP从5.2.x更新到5.3.14) 由于此更新,我们无法使用由uu autoload()运行的自定义语言环境类 据我所知,这是由于“PEAR”中的某个位置存在一个Locale类造成的 有没有一种方法可以解决这个冲突问题,而不用将我的类名从Locale更改为其他名称(基本上是如何强制PEAR Locale不加载或仅为Locale请求而忽略它) 谢谢因为Locale现在是一个本机PHP类,所以不能直接重写它,这就是代码不再工作的原因 解决方案: 重新生成PHP副本,使
谢谢因为
Locale
现在是一个本机PHP类,所以不能直接重写它,这就是代码不再工作的原因
解决方案:
在希望引用Locale类而不是内置类的任何位置使用名称空间
2和3之间的选择取决于你。我建议使用2,因为您的类在功能上可能与PHP类不同,所以您需要与它保持距离。但是,如果您想保留当前的类名,名称空间解决方案也是一个选项。到底是什么问题?它是如何以及何时显示的?问题是,我的Locale类中有一些函数不再运行,从而导致了致命错误“PHP警告:call_user_func()希望参数1是有效回调,类'Locale'没有方法'instance'”和“PHP致命错误:调用成员函数getLocaleString()在/…”中的非对象上,这仍然不是技术描述。PEAR类是否正在无条件加载,因此自动加载程序不会运行?它是自动加载还是优先于您自己的类?您真的希望加载PEAR类吗?我们刚刚查看并发现,从现在起,Locale是一个本地函数,从>=5.3开始。要回答您的问题,是的,它是无条件加载的,因为它是PHP5.3的原生版本;否,我不想加载它,但我无能为力。