روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ هادی قاسمی
شی ساختن در کنترلر
جامعه پی اچ پی ایجاد شده در ۱۹ شهریور ۱۴۰۰

سلام و درود

 

اگر در یک کنترلر ، شی ساخته بشه از یک کنترلر دیگه ، چه اشکالاتی داره ؟

 

مثلا : اینجا من از HomeController شی ساختم در کنترلر ContactController

 

public function delete_contact()
    {
        global $request ;
        $id = $request->get_route_param('id');
        $this->contact_model->delete(['id'=>$id]);
        $data = (new HomeController())->get_contact();
        view('index', $data);
    }

 

اصول سالید رو نقض میکنه یا میتونه درست باشه ؟

 

درود
خیلی بهتره که این وابستگی‌ها از طریق construct تزریق بشه، داخل construct کنترلرتون ازش یه new بگیرید.

یه نکته هم بگم اینکه از دارید  contact رو میگیرید میتونید از مدل Contactتون استفاده کنید به جای استفاده از کنترلر.

داخل مدلتون یه متد بسازید به اسم getContracts و queryتون رو داخلش قرار بدید

امیر صالحی ۲۰ شهریور ۱۴۰۰، ۱۵:۲۷

سلام.

بهتره به این شکل نوشته بشه:

public function delete_contact(HomeController $homeController)
{
    global $request ;
    $id = $request->get_route_param('id');
    $this->contact_model->delete(['id'=>$id]);
    $data = $homeController->get_contact();
    view('index', $data);
}

درضمن نکته ی امیرصالحی در مورد استفاده از مدل contact رو هم توجه کنید. چون کنترلر برای کارهای لایه ی دیتابیس نیست و فقط یک هندلر و گرداننده هست.

محسن موحد ۲۱ شهریور ۱۴۰۰، ۱۹:۱۹