在這篇博客文章中,我將告訴你關(guān)于 Ignition 的一切。
讓我們看看默認(rèn)情況下 PHP 中有什么。在不使用框架的情況下,PHP 提供了這個(gè)功能。您只會(huì)得到錯(cuò)誤:沒(méi)有堆棧跟蹤、沒(méi)有請(qǐng)求或應(yīng)用程序詳情。
Symfony 的錯(cuò)誤頁(yè)面稍微好一些,它向您顯示堆棧跟蹤,但是沒(méi)有多大幫助。
下面的截圖是 Whoops,這是 Laravel 5 中的標(biāo)準(zhǔn)。它比默認(rèn)的 Symfony 好得多,可以顯示堆棧跟蹤和一些關(guān)于請(qǐng)求的信息。盡管在 Laravel 中 Whoops 是默認(rèn)值,但它是一個(gè)框架無(wú)關(guān)的(錯(cuò)誤收集展示)。它僅僅顯示通用信息。
這是 Ignition 的截圖,我們建立的新的錯(cuò)誤視圖。因?yàn)檫@是 Laravel 特有的,我們可以做很多很酷的事情。
發(fā)現(xiàn) Ignition
讓我們來(lái)探索 Ignition 所有的細(xì)節(jié)。它是開源的,您可以在這里查看代碼(https://github.com/facade/ignition)。
如果視圖中有錯(cuò)誤,這就是 whoops 顯示它們的方式。注意,異常消息不適合分配的空間。你必須(鼠標(biāo))懸停在它上面才能看完整(信息)。在堆棧跟蹤中,您可以看到使用了編譯后的 Blade 視圖和內(nèi)容。這使得跟蹤哪個(gè) Blade 視圖文件包含錯(cuò)誤變得困難,并且視圖內(nèi)容本身是不可讀的。
Ignition是一個(gè) Laravel 特定的錯(cuò)誤頁(yè)面。因此,它可以像鉤子一樣,"掛載"到框架中, 用來(lái)顯示未編譯的視圖路徑和您的 Blade 視圖。頂部還有足夠的空間顯示整個(gè)異常頁(yè)面,不需要額外的單擊。我們也只在默認(rèn)情況下顯示應(yīng)用程序幀,因?yàn)檫@些可能是您感興趣的幀。
如果您單擊 stack trace
選項(xiàng)卡右側(cè)文件名旁邊的鉛筆圖標(biāo),我們將在您喜歡的編輯器中自動(dòng)打開該文件。默認(rèn)情況下是 PhpStorm 。您可以在 ignition
配置文件中將其配置為您最喜歡的編輯器。
注意到右上角的那個(gè)小“望遠(yuǎn)鏡”鏈接了嗎?我們只會(huì)在您安裝了Laravel Telescope(第一方調(diào)試助手)的情況下顯示。如果你點(diǎn)擊那個(gè)鏈接,你將被帶到望遠(yuǎn)鏡內(nèi)發(fā)生錯(cuò)誤的異常。
黑暗模式
如果我們默認(rèn)的錯(cuò)誤屏幕太亮了,你會(huì)很高興知道我們的錯(cuò)誤頁(yè)面也有一個(gè)黑暗模式。
Ignition 選項(xiàng)卡
讓我們探索一下 Ignition
頁(yè)面上顯示的選項(xiàng)卡。
「請(qǐng)求」選項(xiàng)卡
在「堆棧跟蹤」選項(xiàng)卡旁邊,您將看到「請(qǐng)求」選項(xiàng)卡。它顯示了您對(duì)請(qǐng)求的所有預(yù)期信息。
假設(shè)你有一個(gè)路由定義是這樣的::
Route::get('/posts/{post}', function (Post $post) { // });
當(dāng)此路由發(fā)生異常,我們將在 Ignition 中打印 路由參數(shù) post
模型($post
變量),以轉(zhuǎn)化后數(shù)組(toArray
)形式呈現(xiàn)。對(duì)于不需要任何綁定的“簡(jiǎn)單”路由參數(shù)也是如此。這是一個(gè)很好的方法,可以很容易地看到 Laravel 為這個(gè)特定的路由接收了什么信息。
在路由參數(shù)之后,我們還將向您顯示在此請(qǐng)求中使用的中間件列表。
接下來(lái)是“視圖”部分。如果異常發(fā)生在視圖中,我們將在這里顯示視圖名稱。甚至:我們還將給出傳遞給視圖的所有數(shù)據(jù)的列表。
用戶選項(xiàng)卡
"用戶" 選項(xiàng)卡包含有使用應(yīng)用程序的用戶和瀏覽器的