• 首页   /  職場   /  
  • 未標題-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 函數詳解的詳細內容!


    ————————————————