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

时间:2012-05-03 13:25:16

标签: php symfony

我使用PHP使用Symfony2编制网站。

我在文件MainContent

中定义了一个类MainController.php

我必须在名为SecurityController.php

的其他控制器文件中使用此类

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

Class 'MainContent' not found...

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

Cannot redeclare class 'MainContent...'

我不明白,不论是否声明。

事实上我是C#程序员,也许我因为这些语言之间存在一些差异而感到困惑。

1 个答案:

答案 0 :(得分:0)

Symfony使用所谓的自动加载。由于您的类未在其自己的文件中定义,因此遵循自动加载规则,无法加载它,因此找不到该类。但是如果你定义了类,那么脚本会被成功处理,包含定义同一个类的其他文件,并且会生成碰撞(不能重新声明类)。

可能的解决方案是:

  • 在一个地方定义类(最好在控制器外部)并在需要时使用include_once / require_once
  • 使该类实际上成为Symfony助手类,因此实际上自动加载
  • 每当您宣布课程时,请使用

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