2012-05-03 70 views
1

我編程網站使用Symfony2PHPPHP的「類未發現」和「不能重新聲明類」錯誤

我在文件MainController.php

定義的類MainContent我曾在一個名爲SecurityController.php

雖然這兩個類在同一個命名空間中定義的其它控制器文件來使用這個類,它給了錯誤:

Class 'MainContent' not found... 

於是,我就在SecurityController.php再次定義類,但結果是:

Cannot redeclare class 'MainContent...' 

我不明白,這是無論是宣戰與否。

其實我是一個程序員C#,也許我的,因爲這些語言之間的一些差異感到困惑。

回答

0

Symfony的使用所謂的自動加載。由於你的類沒有在自己的文件中定義,所以遵循自動加載的規則,它不能被加載,因此沒有找到類。但是,如果你定義類,那麼腳本處理成功,它定義了同一類包括其他文件,併產生碰撞(不能重新聲明類)。

可能的解決方案是:

  • 定義類在一個地方(最好控制器外),並應該使用include_once/require_once只要你需要它
  • 使類實際上是一個Symfony的輔助類,所以自動加載實際工作
  • 每當你在聲明類,使用

    if(!class_exists('ClassName')) { class ClassName {} }

相關問題