在我们在里面添加一个文件之后Myfile.php
:
require_once 'abc.php';
或者
include_once 'abc.php';
我们将如何删除文件?或者如何abc.php
在某个代码块之后停止正在访问的文件内容?
在我们在里面添加一个文件之后Myfile.php
:
require_once 'abc.php';
或者
include_once 'abc.php';
我们将如何删除文件?或者如何abc.php
在某个代码块之后停止正在访问的文件内容?
在 PHP 中,一旦包含资源,就不能删除或“取消包含”。这就是 PHP 文件包含的原则。请参阅:http ://www.php.net/manual/en/function.include.php
include 语句包含并评估指定的文件。
一旦解释器评估了您的代码,工作就完成了。所有操作都已考虑在内,为了撤消更改,您必须执行相反的操作。例如,如果您包含的文件声明了该类,MyClass
那么您需要取消定义它,这也是不可能的,原因与上述相同。请参阅:取消设置类。
如果您的文件实际上添加了函数而不是类,那么从 PHP 5.3 开始,您可以使用匿名函数。这允许您将函数分配给变量,这些变量可以是unset。有关详细信息,请参阅此答案。
如果您的代码逻辑的一部分必须在某个时候消失,那么您在实现之前没有花足够的时间进行设计。
如果由于名称冲突而需要撤消包含,问题几乎相同。但是,在这种情况下,一个解决方案是使用namespaces。尽管如此,对您的应用程序设计进行一些审查就足以避免此类冲突。
编辑框架:单个框架不能适合每个应用程序。例如,Symfony 绝对在任何地方都使用名称空间来避免任何可能的冲突(然而,有些冲突会发生)。如果您的框架不能让您轻松区分具有相同名称的两个模型类,那么我会说它不适合(至少不适合您的设计)。
你不能。一旦其加载无法删除。
有一个解决方法。您可以在打开输出缓冲时包含该文件。然后将输出保存到一个变量中,例如$output
. 需要就用,否则就unset($output)
扔掉;
ob_start();
include('file.php');
$output = ob_get_contents();
ob_end_clean();
稍后,您可以unset($output)
在不再需要它时执行此操作。