Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数名冲突_Php_Gettext - Fatal编程技术网

PHP函数名冲突

PHP函数名冲突,php,gettext,Php,Gettext,我们有一个基于PHP的网站,从2005年开始运行。我们刚刚添加了一个新的开发人员。我们让每个开发人员安装一个本地apache堆栈进行调试。当他在工作站上执行站点时,会出现一条与一个函数的名称冲突有关的错误消息 具体来说,我们有一个名为GetText的函数,它接受5个参数。在他的系统上,他收到一条消息说该函数不能重新声明。它与一个名为gettext(注意大小写的不同)的函数相冲突,该函数被称为接受一个变量 我们在其他任何情况下都不会遇到这种冲突。其他实例包括我们的生产网站和三个开发网站。所有这些实

我们有一个基于PHP的网站,从2005年开始运行。我们刚刚添加了一个新的开发人员。我们让每个开发人员安装一个本地apache堆栈进行调试。当他在工作站上执行站点时,会出现一条与一个函数的名称冲突有关的错误消息

具体来说,我们有一个名为GetText的函数,它接受5个参数。在他的系统上,他收到一条消息说该函数不能重新声明。它与一个名为gettext(注意大小写的不同)的函数相冲突,该函数被称为接受一个变量

我们在其他任何情况下都不会遇到这种冲突。其他实例包括我们的生产网站和三个开发网站。所有这些实例都在FreeBSD unix上运行。我们有运行os X和各种Windows机器的开发人员。该开发人员正在Windows 7上运行

我们在代码库(包括Pear库)中没有看到任何这样的“gettext”函数。作为临时解决方法,我们将函数重命名为“XGetText”。这就解决了问题


这个冲突从何而来?

PHP有一个内置的
gettext
函数(在PHP4和PHP5中),PHP函数名不区分大小写。大概,您的PHP没有使用
--with gettext
标志编译,而his是。

开发人员在其PHP安装上有活动的,它定义了函数
gettext
。资本化对PHP来说并不重要。如果可能的话,他将不得不在php.ini中重新编译php以排除gettext扩展(在这种情况下,我建议使用虚拟机安装自定义php版本)

顺便说一句,gettext是一个非常流行且经常使用的扩展,命名你的用户区函数
gettext
是一个错误的选择。

禁用,因为我肯定你不会在你的项目中使用它

以下是WAMP中的操作方式:


@Anonymous.X“我们”就像“我为之工作的公司”一样,我想。@ceejayoz okkkk理解这是一个次优的解决方案。修复命名冲突,不要阻止使用主扩展。如上所述,我们的解决方法是临时将名称更改为XGetText。这现在可以作为一个永久性的改变,我想它可能是php的gettext内置的,也可能不是。因为我们在pear库中发现了与gettext()的明确冲突。我同意您当然不应该使用库函数名作为用户名。我习惯于与库作者打交道的惯例是,他们不需要所有库组件的通用知识,而是使冲突不太可能发生。例如,将库函数命名为_gettext()或类似函数,而不是gettext()。