يبدأ تطبيق الأعمال عادةً صغيراً: نموذج، وقائمة، وتصدير. وبعد عامين يصبح مسؤولاً عن مسارات المصادقة والصلاحيات والإشعارات وعشرات الشاشات. ما يفرّق بين مشروع يبقى سهل التطوير ومشروع لا يجرؤ أحد على لمسه هو بضعة قرارات تُتخذ مبكراً.
ما يجب تذكّره
- متحكّمات خفيفة: تستقبل الطلب وتفوّض العمل وتعيد الاستجابة، أما منطق العمل فمكانه في موضع آخر.
- أصناف الإجراءات (
ApproveRequest،GenerateInvoice): صنف واحد لعملية واحدة، سهل الاختبار وإعادة الاستخدام من متحكّم أو أمر أو مهمة مجدولة. - التحقق داخل Form Requests بدل نسخه بين المتحكّمات.
- الصلاحيات داخل Policies: تُقرأ
$this->authorize('approve', $request)كجملة وتجمع القواعد في مكان واحد.
الحالات بدل القيم المنطقية
لا يُمثَّل مسار المصادقة جيداً بحقلي is_validated وis_rejected. عمود status مرتبط بـ enum في PHP يجعل الانتقالات واضحة ويمنع التركيبات المستحيلة.
المهام البطيئة في طابور
توليد ملفات PDF وإرسال البريد واستيراد Excel: كل ما يتجاوز ثانية يُرسل إلى طابور انتظار، فتبقى الواجهة سريعة ويمكن إعادة المحاولة عند الفشل.
نصيحة عملية
قبل إضافة ميزة، اكتب في جملة واحدة العملية التي تمثّلها. إن صمدت الجملة فهي صنف إجراء، وإن لم تصمد فالاحتياج لم يتضح بعد بما يكفي لبرمجته.