日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取

發布時間:2024/8/1 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ThinkPHP中有一個debug調試功能,能輸出報錯文件的信息,并能看到這個函數被哪些函數調用,從框架的啟動開始記錄,特別方便調試。于是研究了下它的底層給予了實現。<?php

//--框架核心--Start

//框架內置錯誤處理

function?errDealWith($errno,?$errstr,?$errfile,?$errline)

{

throw?new?Exception('錯誤信息:'?.?$errstr?.?'錯誤文件:'?.?$errfile?.?'錯誤行:'?.?$errline?.?'錯誤碼:'?.?$errno);

}

set_error_handler('errDealWith');

//加載框架

try

{

init();

}

catch?(Exception?$e)

{

showDebug($e);

//showDebug($e->getMessage());

}

//框架調用棧方法

function?showDebug($ex)

{

//錯誤輸出

var_dump($ex->getMessage());

//調用棧輸出

var_dump('調用順序');

$traces?=?array_reverse($ex->getTrace());

foreach?($traces?as?$item)

{

//剔除框架自帶的異常函數

if?($item['function']?!=?'errDealWith')

{

var_dump($item['function']);

var_dump($item);

}

}

}

//框架初始化方法

function?init()

{

//加載index控制器

index();

}

//--框架核心--結束

//-----------------------華麗的分割線

//控制器

function?index()

{

//加載新聞的邏輯

getList();

}

//新聞頁面

function?getList()

{

return?$list;

}

在上面的代碼中存在$list未定義的錯誤。首先要自定義錯誤處理函數或類,這里為了演示只是處理了一種錯誤而已,實際上一個完整的錯誤處理類是非常龐大的,通過拋出異常再獲取getTrace即可實現,開發自己的框架也可以采用。

總結

以上是生活随笔為你收集整理的php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。