【问题标题】:Is it possible to stop including a php file?是否可以停止包含 php 文件?
【发布时间】:2011-12-08 19:29:02
【问题描述】:

是否可以在文件中间停止包含文件?

例如,一个文件将包含:

include('home.php');

home.php 中,它会在某个时候尝试取消包含:

break; // I tried it doesn't work
echo "this will not be output

我说的不是exit,它会停止一切,甚至是根文件。我只想退出当前文件。

【问题讨论】:

  • 很难理解你在这里想要做什么。请举一个例子,或者更好地解释你想要做什么。

标签: php include


【解决方案1】:

代替break,使用return

return

如果从全局范围调用,则结束当前脚本文件的执行。如果当前脚本文件是include()ed 或require()ed,则控制权将传回调用文件。

【讨论】:

  • 我认为如果脚本在没有被include() 调用的情况下运行,那么它仍然会停止执行吗?
  • @GigaWatt:文档是这么说的。
  • 哇超级好。我想知道为什么我以前从来没有学过。感觉很少有人知道这一点。
【解决方案2】:

没有。当您包括或要求时。该文件被完全加载和解析。这并不意味着其中的代码被执行,而是完全加载

如果您希望此代码有不同的执行流程,则需要使用一些控制结构。

http://php.net/manual/en/language.control-structures.php

【讨论】:

  • 干杯,投反对票,但最初的问题是询问“包括 PHP 文件”,我的回答是 100% 正确。您不能停止包含文件。如果他想问关于阻止处决的问题,我想他会这么说的。
  • 只是为了添加到这个答案中,如果您在包含的文件中添加了一个 return 并且在 return 之后有语法错误,它仍然会被致命错误杀死。
【解决方案3】:

您可以做的是在包含的脚本查找的“父”脚本中设置一个标志。如果设置了,它将提前停止执行,否则它将照常继续。

例子:

main.php

<?php
$_GLOBAL['is_included'] = true;
include('somefile.php');
// More stuff here
?>

somefile.php

<?php
// Does some stuff

// Stops here if being include()'d by another script
if ( isset($_GLOBAL['is_included']) ) { return; }

// Do some more stuff if not include()'d
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2010-12-06
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多