توضیحات

در این جلسه به توضیح ایجاد و بارگذاری Controller از طریق URL در پروژه فریمورک MVC با PHP می پردازیم.

توجه :
دوستان اگه از ورژن جدید php استفاده میکنید نیاز هست که توی متد getUrl در صورت نبودن GET['url']_$ مقدار آرایه خالی را برگردونه،اصلاح شده متد getUrl در پایین قرار گرفته که میتونید جایگزین کنید

 public function getUrl() {
        if( isset($_GET['url']) ){
            $url = rtrim($_GET['url'], '/');
            $url = filter_var($url , FILTER_SANITIZE_URL);
            $url = explode('/' , $url);
            return $url;
        }else{
            return [];
        }
    }

بعد از اون نیاز هست در متد construct که بررسی میشه آیا توی url درخواست کنترولر داد شده یا نه، باید چک بشه که متغیر url خالی نمی باشد (خط 20 از فایل core.php)،

if(!empty($url) && file_exists('../app/controllers/' . ucwords($url[0]) . '.php')) { }

توی این شرط فقط empty($url)! اضافه شده است که چک میکنه مقدار متغیر url خالی نباشد.


پی اچ پی php شی گرایی php oop php mvc mvc

مدرس دوره علی شیخ
مدت دوره 06:30:48
تعداد ویدیو 47

وضعیت دوره : کامل شده
قیمت دوره : 229,000 206,000 تومان

نظرات ارزشمند شما:

برای ارسال نظر ابتدا باید وارد سایت شوید

    • سلام وقت بخیر.
      بله، اما این یک مثال هست برای آشنای و درک mvc، برای انتخاب فریمورک، لاراول را برای پروژه استفاده کنید.

  • امکانش هست که ساختار url متناسب با نیاز خودمون شخصی سازی کنیم , و از داخل url شخصی سازی شده ، کنترل و متد و پارامتر استخراج کنیم؟
    مثلا الان در همین سایت وب پروگ course ( نام کنترلر) اول نوشته میشه بعد نام دوره و بعد کلمه episode (نام متد) و بعد هم پارامتر دریافت میشه

    • بله میتونید ریش و قیچی دست شما هست این یک فریمورک ساده هست که خیلی جای کار داره هدف این دوره یادگیری شی گرایی و MVC هست که شما بتونید بهتر فریم ورک های محبوب PHP را درک و استفاده کنید.شما هر جورکه دوس داشته باشید میتونید به این فریم ورک ویژگی اضافه کنید

  • موقعی که هیچ url نباشه متد getUrl هیچ مقداری بر نمیگردونه و باعث میشه تابع file_exists من پیغام زیر بده:

     Notice: Trying to access array offset on value of type null in /Applications/XAMPP/xamppfiles/htdocs/mvc/app/libraries/Core.php on line 10 

    برای حل این مشکل متد getUrl به صورت زیر نوشتم: مشکی پیش نمیاد بعدا؟
    
    
    public function getUrl(){

    if (isset($_GET['url'])){
    $url= $_GET['url'];
    $url=rtrim($url,'/');
    $url=explode('/',$url);
    return $url ;
    }else{
    $url=['pages','index'];
    return $url ;
    }

    }

    • نه مشکلی نداره، میتونی حتی قبل از تابع file_exists هم چک کنی.در کل ارورر نیست و پیام هست که احتمالا به خاطر ورژن PHP باشه.ورژن PHP شما چند هست؟

    • از ورژن ۷.۴.۳ استفاده میکنم. و اینکه xammp روی سیستم عامل مک اجرا کردم.