使用XAMPP和PHP 5.4.4的Normalizer致命错误

时间:2012-12-06 10:28:42

标签: php xampp

当我在自定义命名空间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 文件。

我错过了什么?

1 个答案:

答案 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'));