当我在自定义命名空间Normalizer
中的类\Normalizer::normalize($string, Normalizer::FORM_KD);
中使用PHP类Text.php
(例如Utils
)时,出现以下错误:
Fatal error: Class 'Utils\Normalizer' not found
in C:\xampp\htdocs\MyProject\src\Utils\text.php on line 380
我的项目在 XAMPP 下运行 PHP 5.4.4 。我也知道:
Normalizer
应该可以使用 PHP 5> = 5.3.0 。php_intl.dll
已启用广告php.ini
文件。我错过了什么?
答案 0 :(得分: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
要解决此问题,请确保始终将未在命名空间/别名中声明的函数/ classes / interfaces / constants调用到全局命名空间。
<?php
namespace foo;
/* Notice the leading backslash infront of DateTime*/
var_dump(\DateTime::createFromFormat('Y-m-d','2012-12-06'));