error_get_last()在set_error_handler()之后返回null; PHP 7.0

时间:2016-12-01 16:01:01

标签: php codeigniter error-handling php-7

下一个代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<label>
  <input type="checkbox" data-bind="checked: allChecked">
  all
</label>
<ul data-bind="foreach: items">
  <li>
    <label>
      <input type="checkbox" data-bind="checked: checked"/>
      <span data-bind="text: 'Item ' + id"></span>
    </label>
  </li>
</ul>

运行完美并返回错误数组。 但是当我使用set_error_handler时,它会返回$a["x"];//should trigger notice var_dump(error_get_last());//return the error array

null

这段代码完全适用于PHP5.4我在3个月前更改为PHP7,从那以后我在function _do_nothing(){} set_error_handler('_do_nothing'); $a["x"];//should trigger notice var_dump(error_get_last());//return null 中得到空值 我正在使用关闭功能来检查是否发生了错误,如果是,则将其发送给开发人员。

  1. 有没有办法让这个代码在PHP7中运行?和make error_get_last()适用于set_error_handler()?
  2. 任何其他解决方法的想法?并使一个关机功能得到最后一个错误?我正在使用CodeIgniter,并且不想破解他们的内部代码。

1 个答案:

答案 0 :(得分:0)

这是正常行为,因为在您的示例中,错误已由_do_nothing()函数处理,因此error_get_last()返回null

如果您删除set_error_handler('_do_nothing')错误将不再处理,您将再次收到错误

function _do_nothing(){}
//set_error_handler('_do_nothing');

$a["x"];//should trigger notice
var_dump(error_get_last());//return array() "Undefined variable: a"

PHP5中的行为与PHP7中的行为相同