我们在Myfile.php
内添加了一个文件:
require_once 'abc.php';
或
include_once 'abc.php';
我们将如何删除文件?或者如何在某段代码之后停止访问abc.php
文件内容?
答案 0 :(得分:11)
在PHP中,一旦包含资源,就不能删除或" un-included"。这是PHP文件包含的原理。请参阅:http://www.php.net/manual/en/function.include.php
include语句包含并评估指定的文件。
解释器评估您的代码后,作业就完成了。已考虑所有操作,并且为了撤消更改,您必须执行相反的操作。例如,如果您包含的文件声明了类MyClass
,那么您需要取消定义它,这也是不可能的,原因与上述相同。请参阅:Unset Class。
如果您的文件实际上添加了函数而不是类,那么从PHP 5.3起,您可以使用anonymous functions。这允许您将函数分配给变量,可以为unset。见this answer for details。
如果代码逻辑的一部分必须在某个时刻消失,那么在实现之前,你没有花足够的时间设计。
如果由于名称冲突需要撤消包含,问题几乎是一样的。但是,在这种情况下的解决方案是使用namespaces。尽管如此,对应用程序设计的一点评论应足以避免此类冲突。
编辑框架:单个框架不适合每个应用程序。例如,Symfony绝对在任何地方都使用命名空间来避免任何可能的冲突(但有些冲突)。如果您的框架没有为您提供轻松区分具有相同名称的两个模型类的可能性,那么我说它不适合(至少不符合您的设计)。
答案 1 :(得分:3)
你做不到。一旦加载无法移除。