萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP MVC框架之錯誤捕捉入門教程

PHP MVC框架之錯誤捕捉入門教程

以前有講過關於php mvc的各種用法,本文章主要介紹PHP MVC框架之錯誤捕捉用法說明,各位同學可參考。

前三篇文章已經把MVC的結構原理都簡單的進行了說明和演示。。。當然,不是說一個框架就只有那點東西,一個良好的框架所要求的功能還是要很全面的,例如友好的錯誤輸出,安全處理,防止跨域攻擊等

好了,我們一步一步來。這節要說的是錯誤捕捉,其實這個不難,只要理解2個方法就可以做好錯誤捕捉的程序。

 代碼如下 復制代碼


register_shutdown_function(‘functionname’);  
set_error_handler(‘functionname’); 

第一個方法,是注冊一個shutdown的回調函數,當php腳本關閉時調用,當然這個關閉可以是正常的代碼執行完畢,也可以是程序拋出致命錯誤關閉的腳本,那我怎麼區分呢?別急,php還有一個方法叫error_get_last() 就像函數名說的那樣,獲取php最後一個錯誤信息,這樣就可以判斷是代碼正常執行完畢還是遇到fatal error。。。

第二個方法,是注冊一個error的回調函數,當腳本執行遇到錯誤時調用。

這2個方法最大的區別是,第一個是腳本關閉調用,也就是1次訪問,只會調用一次(因為發生致命錯誤腳本就退出執行了),二第二個方法的觸發調用是發生錯誤的時候,例如訪問數組中不存在的index,使用未定義的變量,就是這些warning,notice錯誤的捕捉。。。如果你想更了解二者的區別,建議訪問php官網查看文檔說明。。。

這裡我就不貼代碼了,有興趣的同學,可以去github那裡下回來慢慢看。。。

 

 代碼如下 復制代碼

<?php

# 定義application路徑

define('APPPATH', trim(__DIR__,'/'));

# 獲得請求地址

$root = $_SERVER['SCRIPT_NAME'];

$request = $_SERVER['REQUEST_URI'];

$URI = array();

# 獲得index.php 後面的地址

$url = trim(str_replace($root, '', $request), '/');


# 如果為空,則是訪問根地址

if (empty($url))

{

    # 默認控制器和默認方法

    $class = 'Index';

    $func = 'welcome';

}

else

{

    $URI = explode('/', $url);

 


    # 如果function為空 則默認訪問index

    if (count($URI) < 2)

    {

        $class = ucfirst($URI[0]);

        $func = 'index';

    }

    else

    {

        $class = ucfirst($URI[0]);

        $func = $URI[1];

    }

}

 

# 把class加載進來

include(APPPATH . '/' . 'application/controllers/' . $class . '.php');

 


#實例化

$obj = new $class;

 


call_user_func_array(

    # 調用內部function

    array($obj,$func),

    # 傳遞參數

    array_slice($URI, 2)

);

 

 

我們來看看最終的效果。。。我們來試試訪問不存在的controller裡的方法試試

先看看沒有錯誤捕捉的時候:

 

再來對比下做了錯誤捕捉的時候

copyright © 萬盛學電腦網 all rights reserved