في هذا الدرس 6تصفّح المواضيع
يغلف إطار Laravel كل طلب HTTP وارد بما يحويه من معاملات استعلام وحقول نماذج وبيانات JSON ورؤوس الرسالة داخل كائن موحد من كلاس Illuminate\Http\Request. وبمجرد كتابة التلميح النوعي Request $request في دالة المتحكم، يقوم حاوي الخدمات بحقن الطلب الحالي تلقائياً.
- الحقن التلقائي للطلب (Request Injection): يحقن حاوي الخدمات كائن الطلب تلقائياً عند إضافة التلميح النوعي للدالة.
- التوافق مع معاملات المسار (Route Params): يُكتب كائن الطلب في بداية معاملات الدالة متبوعاً بمعاملات الرابط.
- واجهة كائنية موحدة (Unified API): يغنيك الكائن تماماً عن التعامل المباشر مع مصفوفات PHP العامة مثل $_GET و$_POST.
<?php
use Illuminate\Http\Request;
public function index(Request $request)
{
$term = $request->input('q');
return view('search.results', compact('term'));
}
يحتاج المتحكم أحياناً لفحص مسار الرابط الحالي أو العنوان الكامل أو طريقة الإرسال قبل معالجة البيانات. توفر دوال مثل path وurl وfullUrl وis وisMethod فحصاً دقيقاً لمعلومات الرابط وطريقة HTTP المستخدمة.
- قراءة المسار والرابط (path / fullUrl): تُرجع path المسار النسبي بينما تُعيد fullUrl الرابط الكامل مع معاملات الاستعلام.
- مطابقة النمط ($request->is): تختبر ما إذا كان مسار الطلب يطابق نمطاً معيناً باستخدام النجمة.
- فحص طريقة الإرسال (method / isMethod): تتحقق من طريقة الطلب الفعلية مثل GET أو POST بأمان.
<?php
use Illuminate\Http\Request;
$path = $request->path();
$full = $request->fullUrl();
if ($request->is('v1/*') && $request->isMethod('GET')) {
// Handle API v1 GET request
}
تقرأ دالة $request->input قيم المدخلات سواء أُرسلت من نموذج HTML أو رابط الاستعلام أو جسم JSON، وتقبل قيمة افتراضية آمنة كمعامل ثانٍ. وإذا أردت حصر القراءة في معاملات الرابط فقط، فاستخدم دالة $request->query المخصصة.
- قراءة المدخلات الشاملة (input Method): تجلب قيمة الحقل مع إمكانية تحديد قيمة افتراضية عند غيابه.
- الصيغة النقطية للمصفوفات (Dot Access): تصل للحقول المتداخلة في المصفوفات أو JSON مثل user.name بسهولة.
- معاملات الرابط فقط (query Method): تقرأ القيم الممررة في عنوان URL فقط وتتجاهل جسم الطلب.
<?php
use Illuminate\Http\Request;
$keyword = $request->input('q', '');
$city = $request->input('shipping.city', 'Riyadh');
$sortBy = $request->query('sort', 'newest');
$allData = $request->all();
تصل مدخلات HTTP الخام دائماً كنصوص، مما قد يسبب أخطاء عند التعامل مع مربعات الاختيار المنطقية أو الأرقام. لذلك يوفر Laravel دوال تحويل النوع المدمجة مثل string وinteger وboolean، بالإضافة لدالتي التصفية only وexcept.
- التحويل المنطقي الذكي (boolean Method): يحول قيم مربعات الاختيار مثل on و1 وtrue إلى قيمة منطقية حقيقية.
- التحويل الرقمي والنصي (integer / string): يضمن الحصول على عدد صحيح أو كائن نصي قابل للتنظيف مباشرة.
- تصفية الحقول المسموحة (only / except): تستخرج الحقول المطلوبة فقط بدلاً من جلب كافة المدخلات عشوائياً.
<?php
use Illuminate\Http\Request;
$perPage = $request->integer('limit', 20);
$remember = $request->boolean('remember_me');
$safeData = $request->only(['title', 'category']);
يمنع التمييز بين دالتي has وfilled الوقوع في أخطاء الحقول الفارغة عند بناء فلاتر البحث. كما يمكنك قراءة رؤوس الرسالة عبر دالة header، واستخراج رمز المصادقة عبر bearerToken، ومعرفة عنوان العميل عبر دالة ip.
- الوجود مقابل الامتلاء (has vs filled): تتحقق has من وجود المفتاح حتى لو كان فارغاً، بينما تشترط filled وجود قيمة غير فارغة.
- قراءة رؤوس الرسالة (header Method): تقرأ أي رأس مرفق مع الطلب مع دعم تمرير قيمة افتراضية.
- رمز المصادقة والعنوان (bearerToken / ip): تستخرج رمز Bearer من رأس التفويض وعنوان IP للعميل مباشرة.
<?php
if ($request->filled('coupon')) {
$code = $request->string('coupon')->trim();
}
$locale = $request->header('Accept-Language', 'ar');
$token = $request->bearerToken();
$userIp = $request->ip();
يساعد استخدام دوال الطلب المحددة النوع والمصفاة على تحصين المتحكمات ضد المدخلات غير المتوقعة أو الناقصة. راجع الجدول المرجعي التالي لاختيار الدالة الدقيقة لفحص وقراءة بيانات الطلب.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو غير المحمي | معيار Laravel 12 الحديث |
|---|---|---|
| جلب قيم المدخلات | القراءة المباشرة من $_POST التي تسبب أخطاء عند غياب المفتاح | استخدام دالة $request->input الآمنة مع القيم الافتراضية |
| قيم مربعات الاختيار | كتابة مقارنات نصية متعددة لفحص قيم on و1 وtrue | استدعاء الدالة المدمجة $request->boolean مباشرة |
| حقول البحث الفارغة | الفحص بدالة isset التي تعتبر النص الفارغ قيمة موجودة | استخدام دالة $request->filled للتأكد من امتلاء الحقل |
| قراءة رؤوس الطلب | تقطيع متغيرات $_SERVER يدوياً لاستخراج رمز التفويض | استخدام دوال $request->header و$request->bearerToken الجاهزة |
<?php
use Illuminate\Http\Request;
$filters = $request->only(['status', 'role']);
$isActive = $request->boolean('active');
$page = $request->integer('page', 1);
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «استقبال وفحص بيانات طلبات HTTP الواردة في Laravel» مفاهيم حقن كائن الطلب داخل المتحكمات، وفحص مسار الرابط وطريقة الطلب، وقراءة المدخلات ومعاملات الاستعلام وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إنشاء وتسجيل البرمجيات الوسيطة Middleware في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Incoming Requests بيانات الطلب
- استخدام كائن Request لقراءة مدخلات المستخدم ومعاملات الرابط ورؤوس الرسالة وطريقة الطلب بأمان وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
- للمراجعة
- 02 Injecting HTTP Request in Controllers حقن كائن الطلب داخل المتحكمات
- المفهوم الهندسي والتطبيق العملي المباشر لقسم حقن كائن الطلب داخل المتحكمات في إطار العمل Laravel 12.
- للمراجعة
- 03 Inspecting Request Path and Method فحص مسار الرابط وطريقة الطلب
- المفهوم الهندسي والتطبيق العملي المباشر لقسم فحص مسار الرابط وطريقة الطلب في إطار العمل Laravel 12.
- للمراجعة
- 04 Reading Input and Query Parameters قراءة المدخلات ومعاملات الاستعلام
- المفهوم الهندسي والتطبيق العملي المباشر لقسم قراءة المدخلات ومعاملات الاستعلام في إطار العمل 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «حقن كائن الطلب داخل المتحكمات» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «فحص مسار الرابط وطريقة الطلب» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من حقن كائن الطلب داخل المتحكمات في إطار العمل Laravel 12؟
يسهم حقن كائن الطلب داخل المتحكمات في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «فحص مسار الرابط وطريقة الطلب» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة قراءة المدخلات ومعاملات الاستعلام بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة قراءة المدخلات ومعاملات الاستعلام.
لماذا يُعد تطبيق جلب المدخلات المحددة النوع وتصفيتها مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق فحص وجود الحقول ورؤوس الطلب في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع دوال فحص بيانات الطلب؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.