Javid Karimov
PHP debugging paketləri

Bu blogda sizlərə istifadə etdiyim 2 php debugger paketi haqqında informasiya verəcəm. Whoops və Tracy debugger
Bir çoxlarımız veb tətbiqetmədə səhv (error) çıxarkən php-nin öz debuggeri informasiyasını görürük. Lakin bir çox hallarda bu informasiya çox gözoxşayan formada və kifayət qədər informativ olmur. Buna görə də əlavə debugger paketi istifadə etməli oluruq. Bu blogda onların 2si haqqında sizlərə informasiya verəcəm.
1. Whoops
Whoops — bu PHP -də baş verən səhv və bildirişlərlə rahat istifadə üçün yaradılmış kitabxanadır. Onun rahat və səliqəli interfeysi var.
Whoops interfeysi səhvi rahat tapmağa və başa düşməyə çox kömək olur. Göründüyü kimi siz səhvin tipini və həmçinin səhv mesajını görə bilirsiniz.
Whoops\Example\Exception thrown with message "Something broke!"
Lakin standart PHP erroru isə belə görünür:
Notice: Undefined offset: 0 in D:\localhost\projects\test\test.php on line 27
Göründüyü kimi paket kodun yerini faylda özü sizə göstərir. Siz onu axtarmağa məcbur olmursunuz.
Daha aşağı gəldikdə siz requestlər siyahısını görə, üzərinə klik edərək birindən digərinə keçə bilərsiniz. Sağ tərəfdə isə səhv baş verən kod parçasını görə bilərsiniz.
Digər müsbət cəhət isə daha aşağıda "Environment & details" bölməsi var ki, orada mövcud dəyişənlər (GET, POST, Files, Cookies), php-sessiya və "Server/Request Data" ($_SERVER) məlumatlarını görmək olar.
Nümunəyə Burada baxa bilərsiniz.
Imkanlar
Bu paketin yaradıcıları onun haqqında aşağıdakı imkanlar olduğunu deyirlər:
Səhvlərin rahat tapılıb göstərilməsi
Başqa paketlərdən asılı olmaması
Rahat APİ
Səhv haqqında informativ səhifə
Səhv olan faylı IDE/redaktorda açmaq imkanı
(JSON, XML, SOAP) formatda responsların oxuna bilməsi
Digər freymvorklərə rahat inteqrasiya olunur
Səliqəli və strukturlu kod
Hazırda whoops aşağıdakı IDE/redaktorları dəstəkləyir:
Emacs
IDEA
MacVim
PhpStorm (только для MacOS)
Sublime Text 2 и возможно 3
Textmate
xdebug-формат
VSCode
Quraşdırılma
Composer ilə rahat quraşdırıla bilər:
composer require filp/whoops
--dev versiya məsləhət görülmür .
Qoşulma və ayarlar
Sadəcə baza formada aşağıdakı qaydada qoşulur:
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
Daha detallı qaydada isə API dokumentasiya oxuya bilərsiniz.
Faylın redaktorda açılması üçün:
use Whoops\Handler\PrettyPageHandler;
$handler = new PrettyPageHandler;
$handler->setEditor('sublime');
editor Parametri aşağıdakıları qəbul edə bilər:
emacs — Emacs
idea — IDEA
macvim — MacVim
phpstorm — PhpStorm (MacOS)
sublime —Sublime Text 2
textmate — Textmate
xdebug — xdebug (xdebug.file_link_format)
vscode — VSCode (Opening VS Code with URLs)
Redaktor üçün link yaradıcını da əlavə etmək rahatdır:
$handler->setEditor(function($file, $line) {return "whatever://open?file=$file&line=$line";});
Daha ətraflı burada oxuya bilərsiniz.
2. Tracy debugger
Bu mənim daha üstün tutduğum bir debugger paketidir. Whoops-da olanların hər biri burada da var. Lakin Tracy əlavə imkanlarına görə daha üstündür.
Həmin imkanlar aşağıdakılardır:
Paketin elə özündə gələn debug bar. Burada səhifənin nə qədər vaxta açıldığını, neçə class cağırıldığını, bazada neçə request getdiyini və s. görə bilərsiniz
Əlavə brauzer debugger paketinin qoşula consola bilməsi.
Debugger lokalda səhvləri göstərir, real serverdə isə səhvi olan hissəni göstərmir, lakin error olduğunu bildirir, həmin errorla bağlı html səhifə yaradır və hətta sizə e-mail də göndərir. Daha dəqiq desəb development modda debugger vizual olaraq açıq olur, production modda isə bağlı.
Development və production modları özü avtomatik təyin edə bilir. Siz İP ünvanınızı əlavə edərək həmin İP üçün debuggeri vizual olaraq açıq saxlaya da bilərsiniz.
Bu paket haqqında ətraflı məlumatı və dokumentasiyanı tracy.nette.org - da oxuya bilərsiniz.
Onu da qeyd edim ki, mənim tərəfimdən hazırlanmış Go Framework -də də Tracy debugger istifadə olunur.
Ümumi fikirlərim:
Hər iki debugger paketi çox yaxşı və məskəhətlidir. Hər birini istifadə etmişəm. Lakin Tracy-də imkanlar çox olduğundan onu daha üstün tuturam. Bəs siz necə ? Fikirlərinizi komentə yaza bilərsiniz.