محتويات الدورة

Laravel / أساسي: أسس الطلب والبيانات / الدرس 1

دورة الطلب وحاوية الخدمات

تتبع الطلب عبر حدود الإطار واجعل الاعتماد صريحاً. استخدم مكونات معزولة مع تمييزها من تطبيق Laravel كامل التهيئة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح التهيئة والتوجيه والوسيط وملكية الاستجابة.
  • حل الاعتماد الملموس والواجهة عمداً.
  • تحديد أساس الإطار والتشغيل في الدورة.

الأساس المتحقق أضيق من ادعاء أحدث إصدار

تستهدف الدورة Laravel 12 وصياغة PHP 8.3. تفحص الأمثلة المكونات المثبتة 12.63.0 على CLI 8.5.12 دون تهيئة المشروع أو بيئته. عند مراجعة 2026-10-25 يبقى 12 بدعم أمني فقط حتى 2027-02-24 وفق الجدول الرسمي. هذا أساس تعليم لا توصية لكل تطبيق جديد. أعد فحص الدعم والتوافق والقيود للنشر، وحدد الإصدار قبل نسخ إعداد لاختلاف الهيكل بين الإصدارات.

تتبع الملكية من المدخل للاستجابة

ينشئ مدخل الويب التطبيق ويهيئه ويمرر الطلب عبر الوسيط والتوجيه ويرسل الاستجابة. تسجل المزودات القدرات وتنسق المتحكمات الاستخدام. تختلف أعمار Artisan والعامل وشروطهما. لا يشغّل مكوّن منفرد في CLI الوسيط والمصادقة وعرض الاستثناء والكوكي تلقائياً. وضح الحدود الغائبة كي لا يعمم نجاح صغير لسلوك التطبيق.

تحل الحاوية شبكة الاعتماد

تبني الحاوية أصنافاً ملموسة من اعتمادات المنشئ، وتحتاج الواجهة ربطاً مقصوداً لاختلاف السياسة. فضّل المنشئ على طلب خدمات عامة داخل المجال. يحل المثال سياسة وتسعيراً بحاوية جديدة دون تطبيق أو قاعدة فيثبت الربط فقط. تبقى المدخلات والأخطاء وملكية الخارج لازمة؛ فلا تصحح الآلية عقداً غامضاً.

php حل واجهة مربوطة صراحة بحاوية معزولة
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
interface PricePolicy { public function apply(int $cents): int; }
final class FixedPolicy implements PricePolicy { public function apply(int $cents): int { return $cents - 100; } }
final class QuoteService {
    public function __construct(private PricePolicy $policy) {}
    public function quote(int $cents): int { return $this->policy->apply($cents); }
}
$container = new Illuminate\Container\Container();
$container->bind(PricePolicy::class, FixedPolicy::class);
echo $container->make(QuoteService::class)->quote(500), PHP_EOL;
الناتج المتوقع
400

يثبت البناء والسياسة محلياً لا مزودات أو نظام تسعير فعلياً.

للربط عمر كما له نوع

قد ينتج الربط العابر مثيلاً جديداً وتحتفظ singleton بواحد في الحاوية. ترتبط scoped بعمر معرف. لا تضع المستخدم أو المستأجر داخل singleton بعامل طويل فتتسرب الحالة. توضح المقارنة الهوية دون عامل فعلي. استخدم الاشتراك الحقيقي بقواعده لا لتوفير منشئ فقط، وافحص التكرار والتحرير للحالة المتغيرة.

php هوية العابر والمشترك بحاوية مملوكة
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
final class Marker {}
$container = new Illuminate\Container\Container();
$container->bind('fresh', fn() => new Marker());
$container->singleton('shared', fn() => new Marker());
echo $container->make('fresh') === $container->make('fresh') ? "same\n" : "different\n";
echo $container->make('shared') === $container->make('shared') ? "same\n" : "different\n";
الناتج المتوقع
different
same

تخص المقارنة هذه الحاوية؛ ويحتاج نطاق الطلب وإعادة العامل دليلاً منفصلاً.

إبقاء تكامل الإطار عند أطراف صريحة

افصل التحليل والإذن والمجال والحفظ والعرض؛ توفر Laravel محولات لا تلغي المسؤولية. اختبر القواعد دون حالة واجهات واختبر التكامل حيث يهم. وثّق الحاوية والإعداد والتخزين ولا تشغل المشروع لتسهيل مثال؛ يربط التجهيز المعزول اللازم فقط فيفسر الفشل ويمنع الخدمات والأسرار.

الأخطاء الشائعة وإصلاحها

لوم التوجيه لغياب ربط واجهة

لماذا يحدث؟
الخلط بين البناء ومطابقة الطلب.
كيف تصلحه؟
فحص شبكة المنشئ وربط التنفيذ المقصود.
كيف تتجنب تكراره؟
اختبار الحل منفصلاً عن إرسال HTTP.

احتفاظ singleton بسياق مستخدم سابق

لماذا يحدث؟
تجاوز الحالة عمر مالكها.
كيف تصلحه؟
استخدام نطاق عمر مناسب أو مدخل لكل عملية.
كيف تتجنب تكراره؟
اختبار مهام وحدود متكررة بهويات مصطنعة.

اعتبار اختبار المكوّن اختبار ويب كامل

لماذا يحدث؟
إخفاء الوسيط والتهيئة الغائبين.
كيف تصلحه؟
تحديد الطبقة وإضافة تكامل معزول.
كيف تتجنب تكراره؟
وسم البيئة والحدود الغائبة لكل مثال.

اختبر فهمك

1. تقبل خدمة واجهة مستودع. ماذا يجب أن تعرف الحاوية؟

اعرض الحل المشروح

تحتاج خريطة للتنفيذ أو المصنع واعتماداته. اربط بديلاً بالذاكرة محلياً لا إعداد التطبيق. لا يثبت البناء صحة الحفظ.

2. لماذا معرف المتعلم الحالي خاصية مشتركة سيئة؟

اعرض الحل المشروح

قد يعيش الكائن بعد الطلب فيكشف سياقاً قديماً. مرر المعرف صراحة أو اربط سياقاً يعاد صحيحاً. اختبر عمليتين متتاليتين لا الحل الأول فقط.

أهم ما تعلمته

  • تربط الحاوية الاعتماد وتملك العقود المعنى.
  • تنتمي افتراضات الإصدار والبيئة والعمر للدليل.

المراجع الرسمية