php“找不到类”和“无法重新声明类”错误


php " Class not found" and "Cannot redeclare class" error

我正在使用Symfony2编写一个带有PHP的网站。

我在文件MainController.php中定义了一个类MainContent

我不得不在名为 SecurityController.php 的其他控制器文件中使用此类

尽管这两个类都在同一命名空间中定义,但它给出了错误:

Class 'MainContent' not found...

所以我试图在SecurityController.php中再次定义类,但结果是:

Cannot redeclare class 'MainContent...'

我不明白,要么声明,要么不声明。

事实上,我是一名C#程序员,也许由于这些语言之间的一些差异而感到困惑。

Symfony使用所谓的自动加载。由于您的类未在其自己的文件中定义,因此按照自动加载的规则,无法加载它,因此找不到该类。但是,如果定义了类,则会成功处理脚本,包含定义相同类的其他文件,并生成冲突(无法重新声明类)。

可能的解决方案是:

  • 在一个地方定义类(最好在控制器外部),并在需要时使用include_once/require_once
  • 使该类实际上是一个Symfony帮助程序类,因此自动加载实际上有效
  • 每当声明类时,

    请使用

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