انتقل إلى محتوى الدرس
الدرس 12
دورة إطار العمل Laravel

متحكمات الموارد القياسية وحقن الاعتماديات في LaravelLaravel Resource Controllers and Dependency Injection

توحيد إجراءات CRUD السبعة عبر متحكمات الموارد Resource Controllers وتخصيص مساراتها وحقن الاعتماديات تلقائياً.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تحتاج معظم كيانات البيانات في تطبيقات الويب مثل المنتجات والمقالات والفواتير إلى نفس العمليات السبع القياسية للعرض والإنشاء والحفظ والتعديل والحذف. يتيح الخيار --resource مع أمر make:controller توليد كلاس متحكم يضم الدوال السبع جاهزة، بينما يسجل السطر Route::resource المسارات السبعة دفعة واحدة.

  • توليد متحكم الموارد (make:controller --resource): ينشئ كلاس متحكم يحتوي على الدوال القياسية السبع جاهزة.
  • تسجيل مسار المورد (Route::resource): يسجل المسارات السبعة بطرقها وأسمائها القياسية في سطر برمجي واحد.
  • تسجيل عدة موارد (Route::resources): يتيح تسجيل عدة متحكمات موارد دفعة واحدة بتمرير مصفوفة ترابطية.
مخطط معماري يوضح متحكمات الموارد القياسية وحقن الاعتماديات في Laravel في إطار العمل Laravel 12
PHP
<?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
<?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
<?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
<?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
<?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
<?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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «إنشاء متحكم الموارد resource» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «الإجراءات القياسية السبعة للموارد» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من إنشاء متحكم الموارد resource في إطار العمل Laravel 12؟

يسهم إنشاء متحكم الموارد resource في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «الإجراءات القياسية السبعة للموارد» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة تخصيص الإجراءات only و except بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة تخصيص الإجراءات only و except.

04

لماذا يُعد تطبيق مسارات apiResource وتخصيص الأسماء مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق حقن الاعتماديات بالباني والدوال في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في جدول إجراءات ومسارات متحكم الموارد؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.