1

カスタム名前空間のクラスでPHPクラスNormalizer(例\Normalizer::normalize($string, Normalizer::FORM_KD);)を使用すると、次のエラーが発生します。Text.phpUtils

Fatal error: Class 'Utils\Normalizer' not found 
in C:\xampp\htdocs\MyProject\src\Utils\text.php on line 380

私のプロジェクトは、PHP5.4.4のXAMPPで実行ます。私はそれも知っています:

  • NormalizerPHP 5>=5.3.0以降で動作するはずです。
  • 拡張子php_intl.dllは私のphp.ini ファイルで有効になっています。

私は何が欠けていますか?

4

1 に答える 1

1

通知を呼び出すときに先頭のバックスラッシュを忘れました。クラス名の前にバックスラッシュを1つだけ使用しましたが、クラス定数を使用しているときは使用していません。Normalizer::FORM_KD\Normalizer::normalize($string, Normalizer::FORM_KD)

PHPでは、名前空間を宣言またはインポートするときに、すべての関数、クラス/インターフェイス、および定数名を名前空間にエイリアスするようにPHPに指示しています。

したがって、次のコードは同様の致命的なエラーを発行します...

<?php
namespace foo;

var_dump(DateTime::createFromFormat('Y-m-d','2012-12-06'));

上記のコードは次のエラーを発行しますPHP Fatal error: Class 'foo\DateTime' not found in /testfile.php on line 4

これを修正するには、名前空間/エイリアスでグローバル名前空間に宣言されていない関数/クラス/インターフェイス/定数を常に呼び出すようにしてください。

<?php
namespace foo;
/* Notice the leading backslash infront of DateTime*/
var_dump(\DateTime::createFromFormat('Y-m-d','2012-12-06'));
于 2012-12-06T10:47:06.717 に答える