قبل البدء بالموضوع، قم بإنشاء ملفين جديدين في دليل وحدات التحكم:
حاوية الخدمة هي نمط تصميم يعمل على مركزية إدارة التبعيات بين الكائنات، مما يوفر طريقة منظمة للوصول إلى الخدمات وإدارتها داخل التطبيق.
يعمل بمثابة سجل للخدمات داخل موقع الويب.
قم أولاً بإنشاء ملف باسم Controller.php في الدليل الأساسي. في هذا قم بتهيئة فئة الحاوية المسؤولة عن إدارة روابط الخدمة وقراراتها.
class Container { protected $bindings = []; public function bind($key, $resolver) { $this->bindings[$key] = $resolver; } public function resolve($key) { if (!array_key_exists($key, $this->bindings)) { throw new Exception("No matching binding found for {$key}"); } $resolver = $this->bindings[$key]; return call_user_func($resolver); } }
تعمل فئة التطبيق كواجهة للحاوية، مما يوفر واجهة ملائمة للوصول إلى الخدمات.
class App { protected static $container; public static function setContainer($container) { static::$container = $container; } public static function container() { return static::$container; } public static function bind($key, $resolver) { static::container()->bind($key, $resolver); } public static function resolve($key) { return static::container()->resolve($key); } }
Bootstrap هو نقطة التطبيق، حيث يتم إعداد كل شيء وتهيئته.
$container = new Container(); $container->bind('Core\Database', function () { $config = require base_path('config.php'); return new Database($config['database']); }); App::setContainer($container);
في هذه العملية، عملية التمهيد:
يمكن حل الخدمات من الحاوية الموجودة في وحدات التحكم باستخدام طريقة App::resolve().
$db = App::resolve('Core\Database');
الآن تم بناء حاوية الخدمة بشكل صحيح ويمكنك رؤية المشروع يعمل بشكل جيد.
أتمنى أن تكون قد فهمت الأمر بوضوح.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3