在 Yii2 使用中,我們發(fā)現(xiàn)一但程序出現(xiàn)錯誤,Yii2 就能自動顯示其專用的錯誤提示界面,和我們寫原生態(tài)時出現(xiàn)的錯誤提示界面完全不一樣。
它究竟是怎么做到的呢:是在哪里設(shè)置監(jiān)聽的?亦或在哪里用的try catch?”。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (推薦學(xué)習(xí):yii框架)
其實(shí) PHP 有自己專用的錯誤處理 API, 當(dāng)程序出現(xiàn)問題時,可以自動調(diào)用指定函數(shù)。而 Yii2 正是利用這一點(diǎn),在其啟動的時候,使用 PHP 內(nèi)置的 set_error_handler 將自己的錯誤處理注冊進(jìn)步并關(guān)閉 PHP 自身的錯誤顯示。
Yii2 錯誤自定義處理
在 官方教程 中,它告訴我們要開啟自定義的錯誤,需要進(jìn)行如下配置組件:
return [ // ... 'components' => [ // ... 'errorHandler' => [ 'errorAction' => 'site/error', ], ] // ... ];
Yii2 錯誤核心處理方法
在 Yii2 錯誤自定義處理 中我們了解了 Yii2 錯誤注冊的原理并知道錯誤的發(fā)生后,Yii2 將調(diào)用 yii\web\ErrorHandler 類對象的 handleException 和 handleError 方法。
其實(shí) yii\web\ErrorHandler 類中并沒有 handleException 和 handleError 方法,但是在其基類 yii\base\ErrorHandler 有,這兩個函數(shù)最終都將調(diào)用 yii\web\ErrorHandler 的 renderException 方法,代碼如下:
# yii\web\ErrorHandler /** * Renders the exception. * @param \Exception $exception the exception to be rendered. */ protected function renderException($exception) { // ... // 注意:控制錯誤是否能自定義的關(guān)鍵 // !YII_DEBUG 表示了如果你現(xiàn)在是在 Debug 模式下,那么不能自定義錯誤 // 即使你配置了組件的 'errorHandler' => ['errorAction' => 'site/error'] 參數(shù) $useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException); // 傳遞到自定義錯誤處理方法 if ($useErrorView && $this->errorAction !== null) { $result = Yii::$app->runAction($this->errorAction); if ($result instanceof Response) { $response = $result; } else { $response->data = $result; } } // ... }
在最終的錯誤顯示方法?renderException?我們可以看出:自定義的錯誤需要在非 DEBUG 模式下才能生效
Atas ialah kandungan terperinci yii2自定義錯誤處理. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

YiiassetbundlesorganizeandManageWebassetssss, JavaScript, andimagesinayiiapplication.1.theysimplifyDependencyManagement, memastikanCorrectloadorder.2.theypreventduplicateassetinclusion.3

Dalam rangka kerja MVC, mekanisme pengawal untuk menjadikan pandangan adalah berdasarkan konvensyen penamaan dan membolehkan penindasan yang jelas. Sekiranya pengalihan tidak ditunjukkan secara eksplisit, pengawal secara automatik akan mencari fail paparan dengan nama yang sama dengan tindakan untuk rendering. 1. Pastikan fail paparan wujud dan dinamakan dengan betul. Sebagai contoh, laluan paparan yang sepadan dengan pertunjukan tindakan pengawal pengawal selia harus pandangan/siaran/show.html.erb atau paparan/pos/show.cshtml; 2. Gunakan rendering eksplisit untuk menentukan templat yang berbeza, seperti render'custom_template 'dalam rel dan paparan (' poss.custom_template ') di laravel

TOCREATEABASICROUTEINYII, FirstSetupAcontrollerbyPlacingItInTHeControllersDirectoryWithProperernamingandClassDefinitionErtingYii \ Web \ Web.1)

Ayiideveloper'skeSponSibilitiesInbilitiesincludedesigningandImplementingFeatures, memastikanPlicationseCurity, andoptimizingPerformance.qualificationsneedareastronggraspofphp, ExperienceWithFront-EndTechnologies, DatabaseManagementsKills, danProblemblembi

Kaedah mewujudkan operasi tersuai di YII adalah untuk menentukan kaedah yang sama bermula dengan tindakan dalam pengawal, secara pilihan menerima parameter; kemudian memproses data, membuat pandangan, atau mengembalikan JSON seperti yang diperlukan; dan akhirnya memastikan keselamatan melalui kawalan akses. Langkah -langkah khusus termasuk: 1. Buat kaedah yang diawali dengan tindakan; 2. Tetapkan kaedah kepada orang ramai; 3. Boleh menerima parameter URL; 4. Proses data seperti menanyakan model, memproses permintaan pos, pengalihan, dan sebagainya; 5. Gunakan AccessControl atau menyemak kebenaran secara manual untuk menyekat akses. Sebagai contoh, ActionProfile ($ ID) boleh diakses melalui /tapak /profil? Id = 123 dan menjadikan halaman profil pengguna. Amalan terbaik adalah

Ayiidevelopercraftswebapplicationsingingtheyiiframework, keperluanKillsinphp, yii-specificknowledge, dan webdevelopmentlifecyclemanagement.keewerponsibilitiesinclude: 1) writingefficientcodeTooptimizePormance, 2)

TouseActiveRecordinYiieffectively,youcreateamodelclassforeachtableandinteractwiththedatabaseusingobject-orientedmethods.First,defineamodelclassextendingyii\db\ActiveRecordandspecifythecorrespondingtablenameviatableName().Youcangeneratemodelsautomatic

Rakaman acara keselamatan di YII boleh dicapai dengan mengkonfigurasi sasaran log, mencetuskan log acara utama, memandangkan penyimpanan pangkalan data, dan mengelakkan rakaman maklumat sensitif. Langkah -langkah khusus adalah seperti berikut: 1. Tetapkan sasaran log khusus dalam fail konfigurasi, seperti filetase atau dBTarget, dan tentukan klasifikasi sebagai 'keselamatan'; 2. Gunakan yii :: info () atau yii :: amaran () untuk merakam log apabila peristiwa keselamatan kritikal (seperti kegagalan masuk dan menetapkan semula kata laluan) berlaku; 3. Secara pilihan menyimpan log dalam pangkalan data untuk pertanyaan dan analisis, dan anda perlu membuat jadual terlebih dahulu dan mengkonfigurasi parameter logTable; 4. Elakkan termasuk data sensitif, seperti kata laluan atau token semasa merakam maklumat konteks, dan anda boleh menggunakan penggantian parameter untuk menambah IP dan nama pengguna; 5
