0

私たちのサーバーは最近更新されました(PHPは5.2.xから5.3.14に更新されました)この更新のため、__ autoload()によって実行されているカスタムロケールクラスを使用できません私の理解では、これは既存のロケールクラスが原因です「PEAR」のどこか

クラス名をロケールから別の名前に変更せずにこの競合の問題を解決する方法はありますか(基本的に、ロケール要求のためだけにPEARロケールをロードまたは無視しないように強制する方法はありますか?)

ありがとう

4

1 に答える 1

1

はネイティブの PHP クラスになったためLocale、直接オーバーライドすることはできません。これが、コードが機能しなくなった理由です。

ソリューション:

  1. Locale モジュールが含まれないように、PHP のコピーを再構築します。おそらく良い考えではなく、互換性には間違いなく悪いですが、どうしても必要な場合は検討できます.

  2. クラスの名前を変更します。この種の作業をかなり簡単にするリファクタリング ツールがあります。

  3. PHP 5.3 の名前空間機能を使用して、Locale クラスに組み込みの Locale クラスとは異なる名前空間を与えます。クラス ファイルの先頭に名前空間句を追加しuse、組み込みの Locale クラスではなく Locale クラスを参照する場所に名前空間を追加します。

2と3のどちらを選ぶかはあなた次第です。あなたのクラスはおそらく PHP のものと機能的に似ていないので、2 をお勧めします。ただし、現在のクラス名を保持したい場合は、名前空間ソリューションもオプションです。

于 2012-09-13T12:27:43.347 に答える