私は(それはそれと同じように、主なアプリケーションではPHP 5.2.xで開発中ですが)現在のアプリケーションをPHP 5.4.x(Apache 5.4.2とPHP 5.4を使用)に適合させようとしています.1私たちのテストサーバーで)、私は現在のアプリケーションでテストサーバーで実行するときにいくつかの警告を見つけています。定数定義はPHP 5.4.xではこれ以上有効ではありませんか?
例えば...私たちは言語を検出し、イディオマスのような定義を含む言語ファイルをロードする機能を備えた当社の現在のアプリケーションで定数の定義を使用している/ LANGの.php、というLANGは2桁の言語表現(es、us、deなど)です。各言語ファイル内
はこの1つのようないくつかの定義があります:だから
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を使ってより良いシステムを実装しようと考えています(これはもっと整理され、扱いやすいと思いますが...)。ただし、アップグレードする前に現在のアプリケーションをしばらく実行したいと思っています。
何を得るのですか? ['get_defined_constants()'](http://php.net/manual/en/function.get-defined-constants.php)を使用すると、そこに 'IDIOMA_AF'定数がありますか? –
言語ファイルの条件付き読み込みのようなサウンドは、その値(おそらく別の言語ファイル)を定義したものをすでに読み込んでいるか、または同じ言語ファイルを複数回含んでいるため動作しません。 [debug_backtrace()](http://php.net/manual/en/function.debug-backtrace.php)を実行する価値があります – Anigel
ええ、基本モジュールがあるので重複したエントリを作成していました。最初の場所(ログイン時)と後でロードする2次モジュール(必要に応じて)、いくつかの定義を共有しました:) –