LEN

【转】 了解PHP中的钩子 register_shutdown_function
(PHP 4, PHP 5, PHP 7)register_shutdown_function — Regis...
扫描右侧二维码阅读全文
07
2017/02

【转】 了解PHP中的钩子 register_shutdown_function

(PHP 4, PHP 5, PHP 7)

register_shutdown_function — Register a function for execution on shutdown

执行PHP文件的时候,php会拉起一个进程或者线程。当这个进程或者线程执行完毕、或者异常中断,或使用exit()、die() 函数中断的时候,就调用 register_shutdown_function 中定义的函数。我认为这个功能更类似于钩子,这个函数建立在PHP的线程或者进程的监控之上。

可以通过下面的例子清晰的看到该函数的作用:

<?php
header("content-type:text/html;chaset=utf-8");

register_shutdown_function('user_shutdown');
register_shutdown_function('user_shutdown_2');

function user_shutdown()
{
    echo "<font color='red'>hello world</font>";
    echo "<br/>";
}

function user_shutdown_2()
{
    echo "<font color='orange'>Are You OK</font>";
    echo "<br/>";
}

echo 11111;
echo '<br/>';
echo 22222;
echo '<br/>';

class Demo
{
    public function __construct()
    {
        register_shutdown_function(array($this, 'user_shutdown_3'));
    }

    public function getName()
    {
        echo "Hello China<br/>";
    }

    public function user_shutdown_3()
    {
        echo "I'm class shutdown method<br/>";
    }


}

$DemoClass = new Demo();
$DemoClass->getName();

执行该文件,最后的结果如下:

11111
22222
Hello China
hello world
Are You OK
I'm class shutdown method

由此我们可以得出,在一个进程或者线程之上可以注册多个register_shutdown_function 函数。并且可以在类中注册该函数。类中该函数必须对外部暴露,必须使用public关键字修饰。

原文转载自 : http://www.cnblogs.com/roverliang/p/6105467.html

最后修改:2017 年 02 月 09 日 09 : 52 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论