防止继续仅加载当前文件而不中断父文件的加载


Prevent continued loading of only current file without interrupting loading of parent file?

查看以下结构:

组.php

<?php
session_start();
include('header.php');
if($_SESSION['admin'])
{ include('groups_admin.php'); }
... html ...
?>

groups_admin.php

<?php
if(!$_SESSION['admin'])
{ die(); }
... html ...
?>

在groups_admin.php内部 - 执行 die(); 会导致页面的其余部分(包括组.php)停止加载。

不包装所有groups_admin.php是一个很大的 if 语句并反转它;有没有告诉 PHP 停止加载该文件中的特定 PHP 文件?

只需在包含中返回,例如:

<?php
if(empty($_SESSION['admin']))
{ return false; }
... html ...
?>

很多人不知道您可以从包含的文件中返回值。

只是为了完成这个答案。您还有其他几个不太优雅(不推荐)的选项。

  • 您抛出异常并在包含之外捕获它
  • 将其包装在 if 块中

尽管与return解决方案相比,这是次优的,但我就是忍不住。

你猜怎么着:php 支持 goto

<?php
if(!$_SESSION['admin'])
{ goto endoffile; }
... html ...
endoffile:
?>

我刚刚发现自己,它让我回到了过去,回到了我的GWBASIC岁月......(叹气!