“致命错误:无法重新声明类”......但未声明该类

Posted

技术标签:

【中文标题】“致命错误:无法重新声明类”......但未声明该类【英文标题】:"Fatal error: Cannot redeclare class" ... but the class was not declared 【发布时间】:2012-01-29 22:00:21 【问题描述】:

(我使用的是 Joomla v1.5.15 和 php 5.3.4)

我已经测试了在这个和其他开发者论坛中找到的解决方案,但我仍然遇到同样的错误。

需要文件 => contratolocal.php

...
if ( !class_exists('MTIHelperEstadosLocal') )
    JLoader::import('helpers.estados.estadoslocal', JPATH_COMPONENT, false);

class MTIControllerContratoLocal extends MTIController

...

必需文件 => estadoslocal.php

...
class MTIHelperEstadosLocal extends MTIHelperEstados

...

"JLoader::import" 通常在 Joomla 中用于将文件导入到实际脚本中。无论如何,我尝试了 "include/require_once" php 方法也没有成功。

我尝试的每个解决方案都遇到相同的错误:

“致命错误:无法重新声明类 MTIHelperEstadosLocal”

之前没有声明这个类,因为我不能在没有导入的情况下使用这个类,如果我打印“get_declared_classes()”php方法的返回数组,这个类就不存在。

发生了什么?

谢谢

【问题讨论】:

项目中只有一个名为“MTIHelperEstadosLocal”的类 【参考方案1】:

解决了。

有两个问题:

    在我的项目中,有一些帮助程序包含其他文件,其中一个之前完成了 require_once。

    require_once 并没有避免第二个包含,我不得不在一个条件中编写每个 require_once:

    if ( !class_exists('MTIHelperEstadosLocal') )

【讨论】:

以上是关于“致命错误:无法重新声明类”......但未声明该类的主要内容,如果未能解决你的问题,请参考以下文章

module 在本地声明组件,但未导出

在 C++ 中声明但未定义的静态函数

如果声明但未初始化,对象的变量是不是使用内存空间?

Spring Jdbc 声明式事务已创建但未执行任何操作

将“m_Mutex”声明为引用但未初始化错误

尝试在 ANDROID 资源中使用 <!ENTITY 时出现错误:“实体已被引用,但未声明。”