في هذا الدرس 6تصفّح المواضيع
تحتاج معظم كيانات البيانات في تطبيقات الويب مثل المنتجات والمقالات والفواتير إلى نفس العمليات السبع القياسية للعرض والإنشاء والحفظ والتعديل والحذف. يتيح الخيار --resource مع أمر make:controller توليد كلاس متحكم يضم الدوال السبع جاهزة، بينما يسجل السطر Route::resource المسارات السبعة دفعة واحدة.
- توليد متحكم الموارد (make:controller --resource): ينشئ كلاس متحكم يحتوي على الدوال القياسية السبع جاهزة.
- تسجيل مسار المورد (Route::resource): يسجل المسارات السبعة بطرقها وأسمائها القياسية في سطر برمجي واحد.
- تسجيل عدة موارد (Route::resources): يتيح تسجيل عدة متحكمات موارد دفعة واحدة بتمرير مصفوفة ترابطية.
<?php
// CLI: php artisan make:controller BookController -r
use App\Http\Controllers\BookController;
use Illuminate\Support\Facades\Route;
Route::resource('books', BookController::class);
يُعد إتقان وظيفة كل إجراء من الإجراءات السبعة وطريقة HTTP وعنوان الرابط والاسم البرمجي المقابل له مهارة أساسية في Laravel. فبينما تختص دالتا index وshow بقراءة البيانات، تعرض دالتا create وedit نماذج الإدخال، وتتولى دوال store وupdate وdestroy حفظ وتعديل وحذف السجلات.
- إجراءات القراءة (Read Actions): تعرض index القائمة الكاملة، بينما تعرض show تفاصيل سجل واحد محدد.
- إجراءات النماذج (Form Display Actions): تفتح create صفحة الإضافة، وتفتح edit صفحة تعديل السجل.
- إجراءات التغيير (Mutation Actions): تتولى store الإضافة وupdate التحديث وdestroy الحذف الفعلي.
<?php
namespace App\Http\Controllers;
class BookController extends Controller {
public function index(): array { return ['list']; }
public function show(string $b) { return [$b]; }
public function destroy(string $b) { return []; }
}
لدواعي الأمان ونظافة جدول المسارات، يجب عدم ترك المسارات غير المستخدمة مفعلة إذا كان المتحكم ينفذ جزءاً فقط من العمليات السبع. تتيح دالتا ->only و->except حصر المسارات المسجلة في الإجراءات المطلوبة فعلياً أو استبعاد الإجراءات غير المرغوبة.
- حصر الإجراءات (->only Method): يسجل فقط المسارات المذكورة داخل المصفوفة الممررة ويتجاهل البقية.
- استبعاد الإجراءات (->except Method): يسجل جميع المسارات السبعة باستثناء الإجراءات المحددة في المصفوفة.
- تقليص المسارات المكشوفة (Smaller Attack Surface): يمنع الوصول لأي دوال فارغة غير مستخدمة في المتحكم.
<?php
use App\Http\Controllers\BookController;
use Illuminate\Support\Facades\Route;
Route::resource('books', BookController::class)
->only(['index', 'show']);
Route::resource('notes', BookController::class)
->except(['create', 'edit']);
عند بناء مسارات لا تحتاج إلى صفحات نماذج الإدخال المرئية create وedit، يمكنك استبعادها وتوليد المتحكم بالخيار --api، كما يمكنك تخصيص أسماء المسارات ومعاملات الأقواس المعقوفة عبر دالتي ->names و->parameters. يمنحك ذلك مرونة كاملة لتكييف المسارات القياسية مع متطلبات مشروعك.
- خيار توليد الواجهات (--api Controller Flag): يولد كلاس متحكم يضم الخمس عمليات الأساسية بدون create وedit.
- تخصيص الأسماء (->names Override): يتيح تغيير الاسم البرمجي لإجراء محدد داخل موارد المسار.
- تخصيص اسم المعامل (->parameters Override): يغير اسم القوس المعقوف في الرابط مثل تحويل {book} إلى {isbn}.
<?php
use App\Http\Controllers\BookController;
use Illuminate\Support\Facades\Route;
Route::resource('books', BookController::class)
->except(['create', 'edit'])
->names(['index' => 'catalog.books'])
->parameters(['books' => 'isbn']);
لأن Laravel ينشئ جميع كلاسات المتحكمات عبر حاوي الخدمات، يمكنك طلب أي كلاس خدمي بتحديد نوعه داخل دالة البناء __construct أو مباشرة في معاملات دالة الإجراء. وتجعل ميزة ترقية خصائص الباني في PHP 8.2+ حقن الخدمات المشتركة داخل المتحكم مختصراً وقابلاً للاختبار بسهولة.
- الحقن عبر الباني (Constructor Injection): حقن الخدمات المشتركة بين عدة دوال داخل دالة __construct.
- الحقن عبر الدالة (Method Injection): حقن الخدمة المطلوبة في إجراء واحد فقط مباشرة ضمن معاملات تلك الدالة.
- ترتيب المعاملات (Parameter Ordering): توضع الكلاسات الخدمية المحقونة قبل معاملات الرابط في توقيع الدالة.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class OrderController extends Controller {
public function __construct(private Request $req) {}
public function show(Request $r, int $id): array {
return ['id' => $id, 'verb' => $r->method()]; }
}
يضمن حفظ جدول الإجراءات السبعة القياسية وطرق HTTP وعناوين الروابط وأسماء المسارات المقابلة لها توحيد أسلوب العمل البرمجي بين كافة أفراد الفريق. احتفظ بهذا الجدول المرجعي كدليل ثابت عند تصميم أي وحدة بيانات جديدة.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو التقليدي | معيار Laravel 12 الحديث |
|---|---|---|
| تسجيل مسارات المورد | كتابة 7 أسطر توجيه منفصلة يدوياً لكل جدول في المشروع | سطر قياسي واحد عبر Route::resource('books', BookController::class) |
| تسمية دوال العمليات | أسماء دوال غير موحدة تختلف من مبرمج لآخر داخل الفريق | الإجراءات السبعة القياسية الموحدة index وcreate وstore وshow وedit وupdate وdestroy |
| حماية الدوال غير المستخدمة | ترك مسارات شاغرة متاحة للوصول العام دون حاجة إليها | حصر المسارات المفعلة بدقة عبر دالتي ->only و->except |
| توفير الكائنات الخدمية | إنشاء الكائنات يدوياً بكتابة new داخل كل دالة في المتحكم | حقن تلقائي للاعتماديات في الباني والدوال عبر حاوي الخدمات |
<?php
use App\Http\Controllers\BookController;
use App\Http\Controllers\OrderController;
use Illuminate\Support\Facades\Route;
Route::resources([
'books' => BookController::class,
'orders' => OrderController::class,
]);
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «متحكمات الموارد القياسية وحقن الاعتماديات في Laravel» مفاهيم إنشاء متحكم الموارد resource، والإجراءات القياسية السبعة للموارد، وتخصيص الإجراءات only و except وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إنشاء وعرض ملفات الواجهات في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Resource Actions متحكمات الموارد
- توحيد إجراءات CRUD السبعة عبر متحكمات الموارد Resource Controllers وتخصيص مساراتها وحقن الاعتماديات تلقائياً.
- للمراجعة
- 02 Creating CRUD Resource Controllers إنشاء متحكم الموارد resource
- المفهوم الهندسي والتطبيق العملي المباشر لقسم إنشاء متحكم الموارد resource في إطار العمل Laravel 12.
- للمراجعة
- 03 Seven Standard Resource Actions الإجراءات القياسية السبعة للموارد
- المفهوم الهندسي والتطبيق العملي المباشر لقسم الإجراءات القياسية السبعة للموارد في إطار العمل Laravel 12.
- للمراجعة
- 04 Filtering Actions only and except تخصيص الإجراءات only و except
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تخصيص الإجراءات only و except في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «إنشاء متحكم الموارد resource» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «الإجراءات القياسية السبعة للموارد» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من إنشاء متحكم الموارد resource في إطار العمل Laravel 12؟
يسهم إنشاء متحكم الموارد resource في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «الإجراءات القياسية السبعة للموارد» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة تخصيص الإجراءات only و except بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تخصيص الإجراءات only و except.
لماذا يُعد تطبيق مسارات apiResource وتخصيص الأسماء مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق حقن الاعتماديات بالباني والدوال في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في جدول إجراءات ومسارات متحكم الموارد؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.