1

我正在PHP使用Symfony2.

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

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

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

Class 'MainContent' not found...

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

Cannot redeclare class 'MainContent...'

我不明白,它要么被声明,要么没有。

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

4

1 回答 1

0

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

可能的解决方案是:

  • 在一个地方定义类(最好在控制器之外)并在需要时使用 include_once / require_once
  • 使该类实际上是一个 Symfony 辅助类,因此自动加载实际上可以工作
  • 每当您声明类时,请使用

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

于 2012-05-03T13:29:25.980 回答