繁体   English   中英

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

[英]php “ Class not found” and “Cannot redeclare class” error

我正在使用Symfony2PHP对网站进行编程。

我在文件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 {} }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM