نظرة معمقة على Laravel Context: تسجيل وتحليل السياق البرمجي باحترافية
يوليو 20, 2025في Laravel 12، تم تقديم Laravel Context كأداة قوية بتخلي تتبع الطلبات، تسجيل الأخطاء، وتحليل سلوك الوظائف الخلفية أسهل وأدق من أي وقت فات. وده بيحصل عن طريق تمرير معلومات "السياق" تلقائيًا في كل طبقات التطبيق.
يعني إيه Laravel Context فعليًا؟
هي آلية لتخزين معلومات إضافية (زي ID المستخدم، أو كود الطلب) في ذاكرة السياق الخاصة بالطلب. Laravel بيضمن إن المعلومات دي تنتقل مع أي عملية لاحقة زي إرسال Job، أو حدث، أو حتى Exception.
السيناريو العملي: تتبع المستخدم في سجل الأخطاء
تخيل إن فيه مستخدم واجه خطأ أثناء استخدام الموقع. بدل ما تسجل بس الخطأ، تقدر تسجل كمان بياناته زي الـ ID أو عنوان الـ IP:
// في AppServiceProvider أو Middleware عام
use Illuminate\Support\Facades\Context;
public function boot()
{
Context::add('user_id', auth()->id() ?? 'guest');
Context::add('ip', request()->ip());
Context::add('path', request()->path());
}
تسجيل البيانات داخل Job
لما تبعت Job من الكونترولر، Laravel هيبعت معاه السياق اللي اتسجل:
// Controller
SomeJob::dispatch($data);
// داخل الـ Job نفسه:
public function handle()
{
\Log::info('تشغيل الوظيفة', [
'user_id' => Context::get('user_id'),
'ip' => Context::get('ip'),
'route' => Context::get('path'),
]);
}
استخدام Laravel Context في التقارير والأخطاء
أنت ممكن تربط السياق بأي عملية تسجيل أو إرسال إخطار، زي:
try {
// كود قد يسبب خطأ
} catch (\Exception $e) {
\Log::error('حصل استثناء', [
'exception' => $e->getMessage(),
'context' => Context::all()
]);
}
نصائح احترافية عند استخدام Laravel Context
- استخدمه بدري: حط بيانات السياق في Middleware بيتنفذ أول ما الطلب يوصل.
- استخدم بيانات مختارة: متحطش بيانات ضخمة أو خاصة، اكتفي بحاجات تساعدك تتبع الخطأ.
- تحديث السياق: ممكن تعدل أو تحذف مفتاح من السياق في وقت لاحق بـ
Context::remove('key'). - لا تستخدمه لتخزين بيانات التطبيق: السياق للـ debugging والتحليل بس، مش لحفظ بيانات المستخدم.
ملخص
Laravel Context أداة قوية هتساعدك تشوف الصورة الكاملة للعمليات في تطبيقك، وخصوصًا في الأنظمة اللي فيها Queue أو Microservices. بمجرد ما تبدأ تستخدمها صح، هتقلل وقت البحث عن الأخطاء وهتعرف توصل لمصدر أي مشكلة بسهولة.
المدونة
يوليو 06, 2025
📘 شرح تفصيلي لتحديثات ECMAScript 2025 جميع مميزات ECMAScript 2025، مع أمثلة عملية وفهم ليه الميزة دي مهمة لأي مبرمج واجهة أمامية. ١. مجموعات مسما...
أغسطس 17, 2025
Laravel Global Scopes: Automatic Query Filtering Eloquent الأهمية: فرض فلترة ثابتة على جميع استعلامات الموديل (مثل Soft Deletes) دون تكرا...
يونيو 17, 2025
React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...
يونيو 30, 2025
أحدث مميزات ECMAScript 2025 في 25 يونيو 2025، تم اعتماد ES2025 رسميًا. الإضافات الجاية هتسهل عليك كتابة الكود: 1. 📦 Import Attributes و JSON Module...
يوليو 07, 2025
Laravel 12.19: استخدام Attributes تنظّم Query Builder في Laravel 12.19، دلوقتي تقدر تستخدم Attribute اسمه #[UseEloquentBuilder] علشان تحدد Query Bu...
يونيو 26, 2025
ألوان في CSS - شرح مبسّط النهارده هنتكلم عن الألوان في CSS: ازاي بنحددها، وخصوصًا الطرق الحديثة زي lab() وoklch(). 1. يعني إيه لون؟ مفيش حاجة اسم...