0
私はウェブサイトで作業していますが、サーバにphp5-intlライブラリをインストールした後に一部のページが動作しません。数時間のデバッグの後、問題はLocaleという名前のコードのクラス名であることがわかりました。php-intlがカスタムロケールクラスと競合しています
クラスの名前を変更する以外の方法はありますか?
私はウェブサイトで作業していますが、サーバにphp5-intlライブラリをインストールした後に一部のページが動作しません。数時間のデバッグの後、問題はLocaleという名前のコードのクラス名であることがわかりました。php-intlがカスタムロケールクラスと競合しています
クラスの名前を変更する以外の方法はありますか?
名前空間の競合のような音がします。ロケールと呼ばれるクラスがありますか?それに名前空間を与える:
<?php
namespace My;
class Locale
{
//
}
次に、あなたが言うことができる:
use My\Locale;
をあなたは両方のクラスを使用するコードを持っている場合、あなたは1のエイリアスを作成することができます
use Locale;
use My\Locale as MyLocale;
次に、あなたが言うことができますnew MyLocale();
と競合しません。 これが役立つことを願っています!
名前を変更するか、理想的には名前空間に移動する必要があります。これは本当に名前空間が設計されているものです。 – iainn
@iainnありがとうございます。 Webサイトのコードは何年も前に開発されており、そこに名前空間の使用法はありません。だから私はそれの中のすべてのクラスに名前空間を追加する必要がありますか? –
これは、すべてのクラスには**含まれていませんが、あなたは間違いなく 'Locale'を扱う必要があります。名前空間がディレクトリ構造と一致するのは良い方法ですが、その必要はありません。あなたの状況に合わせて名前を変更する方が簡単かもしれません。もしあなたが巨大なレガシーコードベースを扱っているのであれば、名前空間にクラスを1つだけ持つのはちょっと変わったかもしれません。 – iainn