فائدة constructor في اللارافيل

السلام عليكم

قد يبدو السؤال تافها ، لكنني ما زلت مبتدئة بالبرمجة في اللارافيل

كلنا نعلم أن constructor يتم استدعاؤه عندما نقوم بعمل object من الكلاس

الآن سؤالي في لارافيل يتم استخدام الconstructor بداخل الcontrollrer و يتم فيه إرسال متغيرات و استدعاء دوال و غيرها من الكود ، فما فائدة استدعاء constructor إذا لم نقم بعمل كائن من controller و هل يتم عمل كائن أو لا من controller ، أعلم أن السؤال قد يبدو بسيطا للبعض لكني لم أفهم هذه الجزئية ، و السؤال الآخر متى نكون بحاجة إلى عمل constructor و ما الطريقة الأفضل لاستخدامه، و شكرا لكم


يمكن الاستفادة من ال constructor في اللارفيل بعدة أمور :

1- استدعاء ال middlewares التي نحتاجها .

public function __construct()
{
    $this->middleware("can:superAdmin");
}

2- استخدام توابع ال Authorization مثل authorize , authorizeResource و غيرها ....

public function __construct()
{
    $this->authorizeResource(Category::class, "category");
}

3- كما يمكن تجهيز متحول أو عملية حسابية معينة لتكون متوفرة بكل التوابع (( حتى لا نكرر الكود )) .

private $index_route;

public function __construct()
{
    $this->index_route = route("admin.roles.index");
}

في المثال هذا لا يمكننا استخدام توابع مثل ال route أو غيره في تهيئة المتحول index_route فبالتالي الحل الوحيد هو باستخدام ال constructor .

بمعنى آخر .... يمكن اعتبار ال constructor أنه تابع يستدعى قبل أي تابع ضمن ال controller , ولا يجب اعتباره كشيء يقوم بتجهيز ال object بقيم معينة لأنه كما ذكرت , أساساً ليس عندنا Object ضمن الكود المقروء معنا .

طبعاً يمكنن التعرف على التوابع الجاهزة التي تقدمها لنا ال laravel إذا نظرنا إلى الملف App\Http\Controllers\Controller.php

و كمعلومة متقدمة , يمكنك الاطلاع على مفهوم dependency injection

شكرا لك ، هل هناك مصادر أكثر لتوضيح فكرة dependency injection ؟

ممكن إلقاء نظرة على هذا الرابط لرؤية المفهوم بشكل أدق من وجهة نظر اللارفيل :

أو ممكن مشاهدة المفهوم بشكل أعم بالنسبة ل php :

أو قراءة الموضوع بشكل علمي من ويكيبيديا :