-2

我需要找到一种方法来跳过 require_once 错误,以防在文件中调用 2 个具有相同名称的 php 类。我有 2 个文件 a.php 和 b.php ,每个文件都在里面声明了 A 类。在 index.php 中,我首先包含一个声明了 A 类的.php 文件。同样在 index.php 中,我必须包含 c.php,它里面有 require_once b.php,因此我得到重复的类名错误并且脚本被停止。我可以找到解决方法吗?感谢您的回复


让我更好地解释一下。关于 Joomla,我构建了一个插件来覆盖组件模型和视图。我在插件中包含了我的模型和视图类,Joomla 使用它们而不是原始组件模型和视图类。当组件模块包含组件原始模型和带有 require_once 的视图类时,就会出现问题。由于我的插件没有使用原始模型类,因此原始模型类所在的文件不包含在 Joomla 中,模块 require_one 能够包含组件模型类,并且这些类与我的插件同名. 我只能更改我的插件代码和类,而不是组件类,第二个。

4

3 回答 3

4

我需要找到一种方法来跳过 require_once 错误,以防在文件中调用 2 个具有相同名称的 php 类。

不,你没有。您不应该在同一个文件中有 2 个类。嗯,让我改写一下。您不能有两个具有相同名称的类(除非已命名空间)。但说真的,你不应该在 1 个文件中有两个类。

我有 2 个文件 a.php 和 b.php ,每个文件都在里面声明了 A 类。

我猜(/希望)它们不是同一个类,因为那会违反(强奸)DRY 原则

我可以找到解决方法吗?

不要复制同一个类。如果两个类是不同的命名空间它。具有真实名称空间的新方式或旧方式:

namespace Lib\Your\Namespace;

或者

class Lib_Your_Namespace
于 2012-08-27T16:14:54.557 回答
0

将 require 调用包装在

if(!class_exists('your_class_name')) {
     require_once('file_name');
}
于 2012-08-27T16:12:31.303 回答
0

我认为命名空间 - 这就是你需要的

于 2012-08-27T16:23:04.140 回答