有没有可能';驱逐出境';在CakePHP中导入的控制器?

有没有可能';驱逐出境';在CakePHP中导入的控制器?,cakephp,Cakephp,我遇到了GroupsController::build\u acl()的问题 我花了一段时间才找到这个bug,现在我发现了,我不知道如何解决它 症状: 并非所有用于节点控制器(由我定义)的方法都会返回 可能的原因: build\u acl()导入一个第三方插件,该插件也有一个NodesController,后续的App::import()不会覆盖它 我将尝试两次构建,其中一次插件代码被注释掉,但更持久的解决方案将是首选 我需要一种方法,可以删除导入的控制器,也可以在保留作用域的情况下强制重新导入

我遇到了
GroupsController::build\u acl()的问题

我花了一段时间才找到这个bug,现在我发现了,我不知道如何解决它

症状:

并非所有用于
节点控制器
(由我定义)的方法都会返回

可能的原因:

build\u acl()
导入一个第三方插件,该插件也有一个
NodesController
,后续的
App::import()
不会覆盖它

我将尝试两次构建,其中一次插件代码被注释掉,但更持久的解决方案将是首选


我需要一种方法,可以删除导入的控制器,也可以在保留作用域的情况下强制重新导入。

如果您不能做您想做的事情,请考虑一下纯php。一旦使用include('some/file.php');如何取消导入它?你不能

现在,您无法覆盖它的原因再次归结于php。如果你跑了会怎么样

<?php
include('some/file.php');
include('some/file.php');
?>

您将获得有关已定义的类的错误


Cake正在阻止这种情况发生,因此唯一(也是正确的方法)是不要有两个同名的控制器。你可以随意命名它们,并使用路由器映射到漂亮的URL。

结果表明该插件是多余的,没有在应用程序中的任何地方调用,如果出现类重新定义错误,该插件就会被破坏。删除文件后,一切正常

两次运行解决了眼前的问题,但这不是一个永久性的解决方案。当然,我知道不能两次包含类定义-正如我推断的,这就是我遇到问题的原因。我的问题是关于重新定义一个类,现在我明白了,可能只有使用PECL扩展才有可能。写下你的最后一句话,我知道。