السلام عليكم
قد يبدو السؤال تافها ، لكنني ما زلت مبتدئة بالبرمجة في اللارافيل
كلنا نعلم أن 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
ممكن إلقاء نظرة على هذا الرابط لرؤية المفهوم بشكل أدق من وجهة نظر اللارفيل :
أو ممكن مشاهدة المفهوم بشكل أعم بالنسبة ل php :
أو قراءة الموضوع بشكل علمي من ويكيبيديا :
التعليقات