🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ استاد رخشاد محجوبی
شی ساختن در کنترلر
جامعه پی اچ پی ایجاد شده در ۱۹ شهریور ۱۴۰۰

سلام و درود

 

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

 

مثلا : اینجا من از 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 رو هم توجه کنید. چون کنترلر برای کارهای لایه ی دیتابیس نیست و فقط یک هندلر و گرداننده هست.

هیلا عبادی ۲۱ شهریور ۱۴۰۰، ۱۹:۱۹