- var_dump: documentation ( source)
- array_shift: documentation ( source)
- error_reporting: documentation ( source)
<?php
class Legacy
{
private $_ignore;
/**
* @param int $ignore
*/
public function __construct($ignore = E_STRICT)
{
$this->_ignore = $ignore;
}
/**
* @param callable $func
* @return mixed
* @throws \Exception
*/
public function call(callable $func)
{
$args = func_get_args();
array_shift($args);
$er = error_reporting();
error_reporting($er &~ $this->_ignore);
try
{
$ret = call_user_func_array($func, $args);
error_reporting($er);
return $ret;
}
catch (\Exception $ex)
{
error_reporting($er);
throw $ex;
}
}
}
var_dump(error_reporting());
(new Legacy())->call(function(){
// strict warningが発生する処理
var_dump(error_reporting());
});
var_dump(error_reporting());