2012-12-06 41 views
1

正規化致命錯誤,當我使用PHP類Normalizer(如\Normalizer::normalize($string, Normalizer::FORM_KD);)在我的自定義空間UtilsText.php類,我得到以下錯誤:與XAMPP和PHP 5.4.4

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

我的項目下運行XAMPPPHP 5.4.4。我也是知道:

  • Normalizer應該工作,因爲PHP 5> = 5.3.0
  • 擴展php_intl.dll在我的php.ini 文件中啓用。

我錯過了什麼?

回答

1

你打電話時\Normalizer::normalize($string, Normalizer::FORM_KD)通知你只在類名的前面用一個反斜槓,但是當你使用類常量不會忘記領先反斜槓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'));