警告:register_shutdown_function():无效的关闭回调
trait ErrorTrait {
public function shutDownFunction() {
$error = error_get_last();
// Fatal error, E_ERROR === 1
if ($error['type'] === E_ERROR) {
//do your stuff
$messageStore="Using $this when not in object context";
if (strstr ( $error['message'],$messageStore))
{
echo "found it";
}
}
}
public function shutdown_function()
{
register_shutdown_function('shutDownFunction');
}
我在我的主类中使用这个特性并从中调用函数
use ErrorTrait;
public function test()
{ self::shutDownFunction();
self::shutdown_function(); }
然后在这一点上,我在一个名为“run”的函数中调用test中的函数
我所做的只是简单地调用函数.
public function run()
{
self::test ();
// Rest of code}
关于为什么会导致问题的任何想法?
解决方法:
您正在将字符串而不是可调用字符传递给register_shutdown_function.电话应该是这样的
register_shutdown_function([$this, 'shutDownFunction']);
所以从这里可以看出怎么调用,在CodeIgniter里面要调用Common.php类里面的函数应该为
//这两个函数写在Common.php里,在外部调用时直接
function shutdown_function()
{
register_shutdown_function([$this,'_shutdown_handler']);
}
function errorhandler_function(){
set_error_handler([$this,'_error_handler']);
}
$common=new Common();
$common->shutdown_function();
$common->errorhandler_function();
还有一个总办法是直接调用,不用在Common.php写上面两个函数
set_error_handler([$common,'_error_handler']);
register_shutdown_function([$common,'_shutdown_handler']);