register_shutdown_function 函數詳解

2020-07-16 10:06:01

未標題-7.png

php開發測試及線上的時候可以根據不同情況設定錯誤和例外處理需要用到有

設定錯誤和例外處理三函數

register_shutdown_function(array(‘Debug’,'fatalError’)); //定義PHP程式執行完成後執行的函數
set_error_handler(array(‘Debug’,'appError’)); // 設定一個使用者定義的錯誤處理常式
set_exception_handler(array(‘Debug’,'appException’)); //自定義例外處理。

下面講一下register_shutdown_function() 函數.

功能:register_shutdown_function() 函數可實現當程式執行完成後執行的函數,其功能為可實現程式執行完成的後續操作。程式在執行的時候可能存在執行超時,或強制關閉等情況,但這種情況下預設的提示是非常不友好的,如果使用register_shutdown_function()函數捕獲異常,就能提供更加友好的錯誤展示方式,同時可以實現一些功能的後續操作,如執行完成後的臨時資料清理,包括臨時檔案等。

可以這樣理解呼叫條件:

1、當頁面被使用者強制停止時

2、當程式程式碼執行超時時

3、當PHP程式碼執行完成時,程式碼執行存在異常和錯誤、警告

範例說明

1. 一個簡介的例子 , 呼叫一個函數

<?php
    function test() {
        echo "test()";
    }
    register_shutdown_function(array("test"));
    echo "show: ";
 ?>

這個例子輸出

show: test()

這個函數的作用就是在退出指令碼前,呼叫已經註冊的函數,並執行該函數。

2. 在類中用一個陣列作為一個引數

<?php
class ClassDemo {
    public function __construct() {
        register_shutdown_function(array($this, "f"));
    }
 
    public function f() {
        echo "f()";
    }
}
 
$demo = new ClassDemo();
echo "before </br>";
?>

輸出:

before
f()

3. 帶有引數的例子:

<?php
function f($str) {
        echo $str."<br>";
}
  
register_shutdown_function("f","hello");
 
class ClassDemo {
    public function __construct() {
        register_shutdown_function(array($this, "f"),"hello");
    }
 
    public function f($str) {
        echo "f():".$str;
    }
}
 
$demo = new ClassDemo();
echo "before </br>";  
?>

注意事項

1,register_shutdown_function()函數可重複呼叫,但執行的順序與註冊的順序相同
2,如果在呼叫register_shutdown_function()函數之前有exit()函數呼叫,register_shutdown_function()函數將不能執行
3,PHP4後支援註冊函數引數傳遞PHP視訊教學
4,在某些伺服器端,如Apache,當前目錄在register_shutdown_function()函數中能夠改變
5,register_shutdown_function()函數執行在headers傳送之後

以上就是register_shutdown_function 函數詳解的詳細內容,更多請關注TW511.COM其它相關文章!