1

我正在尝试(以并行方式,就是这样,因为我们仍在为我们的主要应用程序开发 PHP 5.2.x)使我们当前的应用程序适应 PHP 5.4.x(使用 Apache 2.4.2 和 PHP 5.4.1在我们的测试服务器中)但是当我们在测试服务器中运行它们时,我在当前的应用程序中发现了一些警告。

例如......我们在当前应用程序中使用常量定义,该函数检测语言并加载包含定义的语言文件,如idiomas/ lang .php,是lang一个 2 位数的语言表示(es,us,德等)。

在每个语言文件中都有一些像这样的定义:

define("IDIOMA_AF", "Afrikaans");
define("IDIOMA_AR", "العربية");
define("IDIOMA_BG", "български език");

因此,当我们想要输出给定的翻译文本时,我们这样做:

<?php echo IDIOMA_AF; ?>

当应用程序被抛出时,PHP 5.4.1 输出的消息如下:

Notice: Constant IDIOMA_AF already defined in D:\apache\htdocs\aplicacion\modulos\base\idiomas\es.php on line 34

有没有人有同样的问题?我想了解一下您的经验,因为知道如何解决这些问题会很有用。我们正在考虑使用 gettext 实现一个更好的系统(我认为从长远来看它更有条理并且更容易处理,但仍然......),尽管我们希望在升级它们之前运行我们当前的应用程序一段时间。

4

1 回答 1

2

这意味着您尝试定义常量两次(这是不允许的)。

你可以试试:

if (!defined('IDIOMA_AF')) define('IDIOMA_AF', 'Afrikaans');

或者跟踪并修复为什么你要定义一个常量两次。

该函数get_defined_constants()也是解决此类问题的有用调试工具。

或者,忽略这些错误:error_reporting(E_ALL & ~E_NOTICE);

于 2012-05-02T15:28:04.430 回答