我正在使用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 {} }