首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么is_null在未设置变量上抛出异常

为什么is_null在未设置变量上抛出异常
EN

Stack Overflow用户
提问于 2020-02-24 12:40:43
回答 2查看 304关注 0票数 1

在Laravel终端命令的深处,我有以下代码:

代码语言:javascript
复制
<?php
/* ... */

class TrackShipment extends Command
{

   /* ... */

    public function handle()
    {
      /* ... */
         if (is_null($eventHook) || $eventHook->uri != $statusHook->uri) {
          /* ... */
         }
     }
}

当代码的这一部分执行时,除以下异常外,进程将终止

代码语言:javascript
复制
ErrorException  : Undefined variable: eventHook

这是令人惊讶的,因为我在各种地方都使用过类似的代码,而且在未设置变量上调用is_null时,PHP会返回true,尽管它会在stderr上发出通知。

我假设Laravel正在从它的代码中调整PHP设置,以使is_null抛出异常,而不是将通知打印给stderr。这是什么环境?我如何在香草php7.2中复制例外?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-24 12:55:34

Laravel最有可能使用set_error_handler设置自定义错误处理程序函数:

https://www.php.net/manual/en/function.set-error-handler.php

您可以定义管理错误的自定义方法。

这里是:https://github.com/laravel/framework/blob/a05b9dcb3b1e8069b59a9af90d0b157c30382131/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php#L43

之前的回答很抱歉。

票数 1
EN

Stack Overflow用户

发布于 2020-02-24 13:27:28

如果未定义变量,则函数is_null触发器会发出通知。Laravel将该通知转换为例外。

有两个函数可以用来检查未定义的变量,这些变量不会触发通知。

  1. isset https://www.php.net/manual/en/function.isset.php
  2. empty https://www.php.net/manual/en/function.empty.php

第一个将返回false为null,因此您必须否定它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60376175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档