PHP 中是否记录了这种对 exit 和 die 的特殊处理?

2023-11-22

我刚刚读过该页面表达式在 PHP 文档中,在顶部它说:

定义表达式的最简单但最准确的方法是“任何具有值的东西”。

这个简单的定义包括所有函数和大多数语言构造,但是有一些语言构造明确声明它们不返回值。

以下是确实返回值的语言结构的列表:

  • empty
  • eval
  • include
  • 包含一次
  • isset
  • list
  • require
  • 需要一次
  • print

以下是一些有趣的函数,它们不返回值,因此不是表达式:

  • die
  • echo
  • exit
  • return
  • unset
  • __halt_编译器

I find die and exit特别令人感兴趣的是,因为尽管没有返回值,它们仍可以用作 PHP 中的表达式。正如预期的那样,以下代码行都会引发语法错误:

echo 'Hi' or echo 'Bye';

if(echo('foo'))
     return return(1);

$foo['bar'] = isset($foo['bar']) ? unset($foo['bar']) : 0;

if(unset($foo['bar']))
    __halt_compiler() or die;

然而,以下 PHP 代码完全没有语法错误:

print 'Hi' or print 'Bye';    // Makes sense, print returns a value

if(!die() and exit)           // Wait what's happening here?
    quit(die(exit(quit())));  // die and exit don't have return values (does quit?)

$x = true ? die/2 : 5*exit();
$y = pow(die,7);

isset($_GET['bar']) or die(); // This one is actually pretty commonly used.

function quit(){              
    return exit;
}

我浏览了 PHP 文档,但找不到任何提及 die() 和 exit() 的特殊处理。 PHP 专家知道这是否在任何地方都有记录吗?这是预期的行为吗?isset($_GET['bar']) or die();图案使用安全;它会在 PHP 的未来版本中突然崩溃吗?


除了运行时到达代码路径之外,PHP 不会检测错误。与许多其他语言不同,它不会在页面“编译”时列出错误 - 因此您只会在执行各自的源代码行时看到错误。

在您的示例中,对返回值的评估exit or die 从未完成。 PHP 不会报告错误,因为它从未尝试评估结果,因为线程已退出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中是否记录了这种对 exit 和 die 的特殊处理? 的相关文章

  • Laravel - 在一个方法中返回多个值

    这是我目前陷入困境的地方 我正在执行多种方法 对同一个表进行不同的查询 public function totalOfA return a Stocks where user id this gt employee gt id gt whe
  • Symfony 3 - 你请求了一个不存在的服务,这让我发疯

    所以 这不是我第一次创建服务 但我只是无法解决错误 您请求了一个不存在的服务 global settings 我为确保服务正确设置而采取的步骤 My AppBundleExtension php namespace AppBundle De
  • 在 PHP 中你使用复数还是单数来命名你的数组? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当我命名数组类型变量时 我经常遇到一个困境 我使用复数还是单数命名我的数组 例如 假设我有一个名称数组 在 PHP 中我会说 names arr
  • 在 CodeIgniter、SQL 中调用布尔值的成员函数 result()

    我试图根据搜索关键字查看 data results 中有哪些数据 但每次都会出现上述致命错误 有人可以帮助我吗 我的控制器 public function execute search search term this gt input g
  • 无限滚动启用(wordpress)

    因此 我发现本教程可以启用无限滚动 http wptheming com 2012 03 infinite scroll to wordpress theme http wptheming com 2012 03 infinite scro
  • PHP的rand函数真的有那么糟糕吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • XMLHttpRequest() 并输出 csv 文件

    我可以通过向新窗口发出 html 表单 POST 并使用 PHP 响应来成功生成 csv 文件 header Content type text csv header Content Disposition attachment filen
  • 如何创建一个学说实体的模拟对象?

    我正在尝试使用 phpunit 为使用原则 2 的模型编写单元测试 我想模拟原则实体 但我真的不知道如何做到这一点 谁能向我解释我需要如何做到这一点 我正在使用 Zend 框架 需要测试的模型 class Country extends A
  • 在 php 文件上调用 exec 并传递参数?

    我想使用调用 php 文件exec http nz php net manual en function exec php 当我调用它时 我希望能够通过 id 传递变量 我可以打电话echo exec php var www unity s
  • 使用 2 个商户账户的 1 笔交易

    我需要设置一个账单支付系统 以允许使用 2 个商家帐户进行 1 笔交易 例如 1 个商家帐户附加到接收资金的客户 假设 30 美元的购买费用 并且附加我们将向帐单支付服务提供商收取 3 美元的帐单支付费用 因此 资金需要转入 2 个独立的商
  • php-fpm 需要在监狱环境中放置哪些系统文件才能在 ubuntu 上正常运行?

    我在 ubuntu 12 04 上使用 php5 fpm 并且为 nginx 托管的每个域都有单独的池和 chroot 位置 不过 我知道有些系统文件需要直接放在jail中 但是我需要哪些呢 我知道 dns 解析当前不起作用 并且我读过一些
  • 为什么在打开的文件上取消链接成功?

    为什么打开的文件被删除了 在 Windows Xamp 上 我收到消息 仍在工作 但在其他 PHP 服务器上 文件被删除 即使它已打开 并且我收到消息 文件已删除 我也可以从 FTP 删除文件 即使第一个脚本仍在工作 UNIX 系统通常允许
  • 如何在会话过期后自动更新数据库而不刷新我的页面

    您需要刷新或单击该代码 然后它才会转到索引页面 并且在会话过期后更新数据库之前 如何让会话过期后自动更新数据库 使用户活跃度为0 而无需刷新或点击页面 idletime 3600 after 1hr the user gets logged
  • YouTube api 的永久访问令牌?

    我已经浏览了用于身份验证的 Oauth 和 AuthSub 方法的 google 文档 并且我尝试通过 google 搜索此内容 但没有结果 对于 Facebook 您可以请求长度为 的访问令牌lifetime 这意味着您不必每隔几周就请求
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • 在 PHP 中使用重命名函数时出错

    尽管文件仍然被移动到正确的目录中 但我不断收到此错误 有人知道我为什么会收到此错误吗 Warning rename Images uploaded 1162504 56863010 jpg Images uploaded Portraits
  • 从套接字读取数据,发送响应并关闭

    我正在开发一个 c 和 php 项目 其中 PHP 脚本打开一个到 c 程序的套接字 c 程序将读取数据 然后发回响应 在 PHP 脚本中我有以下内容 echo Opening Client fp fsockopen 127 0 0 1 1
  • PHP 中的随机排列对象

    如何在 PHP 中对对象进行排序 我试过shuffle 但这需要一个数组 Warning shuffle expects parameter 1 to be array object given in var www index php o
  • 特殊字符和 URL 重写

    我目前正在开发一个应用程序 该应用程序从暴雪社区 API 中提取 JSON 数据并使用 PHP 对其进行解析 一切正常 直到我遇到一个名字中有特殊字符的角色 为了提取角色数据 我需要知道他们的角色名称和他们所在的领域 我将名称和领域通过 U
  • 在 Woocommerce 中设置购物车商品价格后重新计算总计

    通过 set price 方法更改产品价格后 如何更改小计价格 现在在review order php中按旧价格计算总成本 cart php foreach WC gt cart gt get cart as cart item key g

随机推荐