توضیحات

در این جلسه به توضیح ایجاد و بارگذاری 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 خالی نمی باشد،


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

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


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

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

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

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

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

  • امکانش هست که ساختار 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 روی سیستم عامل مک اجرا کردم.