هذه حزمة لدمج شريط تصحيح PHP مع Laravel. ويشمل خدمة ServiceProvider لتسجيل Debugbar وإرفاقه بالإخراج. يمكنك نشر الأصول وتكوينها من خلال Laravel. إنه يمسك بعض جامعي العمل مع Laravel ويقوم بتنفيذ زوجين من DataCollectors مخصصين ، خاصة بـ Laravel. تم تكوينه لعرض عمليات إعادة التوجيه وطلبات (jQuery) Ajax. (الموضحة في المنسدلة) اقرأ الوثائق لمزيد من خيارات التكوين.

حذر
استخدم Debugbar فقط في التنمية. لا تستخدم Debugbar على مواقع الويب التي يمكن الوصول إليها للجمهور ، حيث ستسرب المعلومات من الطلبات المخزنة (حسب التصميم).
تحذير
يمكن أن يبطئ التطبيق أيضًا (لأنه يجب أن يجمع البيانات وتقديمها). لذلك عند تجربة بطء ، حاول تعطيل بعض جامعي.
تتضمن هذه الحزمة بعض جامعي المخصصين:
Bootstraps هواة الجمع التالية لارافيل:
والجمعات الافتراضية:
كما يوفر واجهة واجهة ( Debugbar ) لسهولة تسجيل الرسائل والاستثناءات والوقت
طلب هذه الحزمة مع الملحن. يوصى بتطلب الحزمة للتطوير فقط.
composer require barryvdh/laravel-debugbar --devيستخدم Laravel اكتشاف الحزمة التلقائي ، لذلك لا يتطلب منك إضافة ServiceProvider يدويًا.
سيتم تمكين DebugBar عندما يكون APP_DEBUG true .
إذا كنت تستخدم مسارًا جذابًا/احتياطيًا ، فتأكد من تحميل DebuGbar ServiceProvider قبل خدمة التطبيق الخاصة بك.
إذا كنت لا تستخدم اكتشاف تلقائي ، فأضف ServiceProvider إلى قائمة مقدمي الخدمات. لـ Laravel 11 أو الأحدث ، أضف ServiceProvider في bootstrap/مقدمي الخدمات. لـ Laravel 10 أو أكبر ، أضف ServiceProvider في config/app.php.
Barryvdh Debugbar ServiceProvider::class, إذا كنت ترغب في استخدام الواجهة لتسجيل الرسائل ، فأضف هذا داخل طريقة register في app/Providers/AppServiceProvider.php Class:
public function register (): void
{
$ loader = Illuminate Foundation AliasLoader:: getInstance ();
$ loader -> alias ( ' Debugbar ' , Barryvdh Debugbar Facades Debugbar::class);
} يتم تمكين profiler افتراضيًا ، إذا كان لديك app_debug = true. يمكنك تجاوز ذلك في config ( debugbar.enabled ) أو عن طريق تعيين DEBUGBAR_ENABLED في .env الخاص بك. راجع المزيد من الخيارات في config/debugbar.php يمكنك أيضًا تعيينها في التكوين الخاص بك إذا كنت ترغب في تضمين/استبعاد ملفات البائع أيضًا (Fontawesome و Aights.js و jQuery). إذا كنت تستخدمها بالفعل في موقعك ، فقم بتعيينه على خطأ. يمكنك أيضًا عرض بائعي JS أو CSS فقط ، من خلال تعيينه على "JS" أو "CSS". (يتطلب تسليط الضوء. js كلا من CSS + JS ، لذلك تم تعيينه على true for true that syntax pinkning)
php artisan vendor:publish --provider= " BarryvdhDebugbarServiceProvider " تأكد من إضافة laraveldebugbar إلى قائمة التدفق الخاصة بك في config/octane.php .
' flush ' => [
Barryvdh Debugbar LaravelDebugbar::class,
], بالنسبة إلى Lumen ، قم بتسجيل مزود مختلف في bootstrap/app.php :
if ( env ( ' APP_DEBUG ' )) {
$ app -> register ( Barryvdh Debugbar LumenServiceProvider::class);
}لتغيير التكوين ، انسخ الملف إلى مجلد التكوين الخاص بك وتمكينه:
$ app -> configure ( ' debugbar ' );يمكنك الآن إضافة رسائل باستخدام الواجهة (عند إضافتها) ، باستخدام مستويات PSR-3 (تصحيح ، معلومات ، إشعار ، تحذير ، خطأ ، حرجة ، تنبيه ، طوارئ):
Debugbar:: info ( $ object );
Debugbar:: error ( ' Error! ' );
Debugbar:: warning ( ' Watch out… ' );
Debugbar:: addMessage ( ' Another message ' , ' mylabel ' );وبدء/توقف توقيت:
Debugbar:: startMeasure ( ' render ' , ' Time for rendering ' );
Debugbar:: stopMeasure ( ' render ' );
Debugbar:: addMeasure ( ' now ' , LARAVEL_START , microtime ( true ));
Debugbar:: measure ( ' My long operation ' , function () {
// Do something…
});أو استثناءات السجل:
try {
throw new Exception ( ' foobar ' );
} catch ( Exception $ e ) {
Debugbar:: addThrowable ( $ e );
}هناك أيضًا وظائف مساعد متاحة للمكالمات الأكثر شيوعًا:
// All arguments will be dumped as a debug message
debug ( $ var1 , $ someString , $ intValue , $ object );
// `$collection->debug()` will return the collection and dump it as a debug message. Like `$collection->dump()`
collect ([ $ var1 , $ someString ])-> debug ();
start_measure ( ' render ' , ' Time for rendering ' );
stop_measure ( ' render ' );
add_measure ( ' now ' , LARAVEL_START , microtime ( true ));
measure ( ' My long operation ' , function () {
// Do something…
});إذا كنت تريد أن تتمكن من إضافة DataCollectors الخاصة بك ، من خلال الحاوية أو الواجهة:
Debugbar:: addCollector ( new DebugBar DataCollector MessagesCollector ( ' my_messages ' ));
//Or via the App container:
$ debugbar = App:: make ( ' debugbar ' );
$ debugbar -> addCollector ( new DebugBar DataCollector MessagesCollector ( ' my_messages ' )); بشكل افتراضي ، يتم حقن مصحح الأخطاء قبل </body> . إذا كنت ترغب في ضخ Debugbar بنفسك ، فقم بتعيين خيار التكوين "حقن" إلى خطأ واستخدم العارض بنفسك واتبع http://phpdebugbar.com/docs/rendering.html
$ renderer = Debugbar:: getJavascriptRenderer ();ملاحظة: عدم استخدام الحقن التلقائي ، سيقوم بتعطيل معلومات الطلب ، لأنه يتم إضافته بعد الاستجابة. يمكنك إضافة Default_Request DataCollector في التكوين كبديل.
يمكنك تمكين أو تعطيل Debugbar أثناء وقت التشغيل.
Debugbar:: enable ();
Debugbar:: disable ();ملحوظة. بمجرد تمكينه ، تتم إضافة جامعي (ويمكن أن ينتجوا عن النفقات العامة الإضافية) ، لذلك إذا كنت ترغب في استخدام مصحح الأخطاء في الإنتاج ، والتعطيل في التكوين وتمكين فقط عند الحاجة.
يتذكر Debugbar الطلبات السابقة ، والتي يمكنك عرضها باستخدام زر Browse على اليمين. سيعمل هذا فقط إذا قمت بتمكين debugbar.storage.open في التكوين. تأكد من قيامك بذلك فقط على التطوير المحلي ، لأنه بخلاف ذلك ، سيتمكن الآخرون من عرض الطلبات السابقة. بشكل عام ، يجب استخدام DebugBar محليًا أو على الأقل مقيدًا بواسطة IP. من الممكن تمرير رد الاتصال ، والذي سيتلقى كائن الطلب ، بحيث يمكنك تحديد الوصول إلى تخزين OpenHandler.
Laravel Debugbar يأتي مع امتدادات غصين. يتم اختبار هذه مع Rcrowe/Twigbridge 0.6.x
أضف الامتدادات التالية إلى Twigbridge Config/extensions.php (أو قم بتسجيل الامتدادات يدويًا)
' BarryvdhDebugbarTwigExtensionDebug ' ,
' BarryvdhDebugbarTwigExtensionDump ' ,
' BarryvdhDebugbarTwigExtensionStopwatch ' , سيحل تمديد التفريغ محل وظيفة التفريغ لإخراج متغيرات باستخدام DataFormatter. يضيف ملحق Debug وظيفة debug() التي تمرر المتغيرات إلى جامع الرسائل ، بدلاً من عرضها مباشرة في القالب. يتفريغ الحجج ، أو عندما فارغة ؛ جميع متغيرات السياق.
{{ debug() }}
{{ debug( user , categories ) }}يضيف امتداد ساعة الإيقاف علامة ساعة توقيت مماثلة لتلك الموجودة في Symfony/Silex Twigbridge.
{% stopwatch " foo " %}
…some things that gets timed
{% endstopwatch %}