۱ محمد فهیمی
پاسخ تمرین
جامعه پی اچ پی ایجاد شده در ۱۴ آذر ۱۴۰۱

سلام و احترام

کاری که من انجام دادم رو ممنون میشم بررسی کنید و ببنید آیا درست هستش

در متود add و با استفاده از تابع array_merge میدل ور گلوبال داده شده که اگه true یا false بشه فعال و غیر فعال میشه در تمامی پروژه

    public static function add( $method, $uri, $action, $middleware = [])
    {
        
        $newMidlleware = array_merge($middleware , ['middlewareGlobal'=> true]);
        $method = is_array( $method ) ? $method : [$method];
        self::$routes [] = [
            'method' => $method,
            'uri'    => $uri,
            'action' => $action,
            'middleware' => $newMidlleware
        ];
    }

و شرطی که در Route قرار داده میشه

    public function run()
    {
       
        if($this->courentRoute['middleware']['middlewareGlobal'] === true){
            die('echo 123'); //add your middleware
        }
        foreach($this->courentRoute['middleware'] as $middleware){
                if(class_exists($middleware)){
                    $salam = new $middleware;
                    $salam->handle();
                }
        }
        if(!$this->invalidRequest($this->request)){
            $this->dispatch405();
        }
        if(is_null($this->courentRoute)){
            $this->dispatch404();
        }
        if(is_null($this->courentRoute['action']) && empty($this->courentRoute['action']) ){
            return;
        }
        $this->dispatch();
    }

سلام،

از لحاظ پیاده سازی که مشکلی نداره، اما خود middleware برای اهداف خاصی میاد مثل بررسی http request‌ها و اعمال محدودیت قبل از رسیدن به کنترلر و در نهایت نمایش به کاربر یا اینکه مثلا احراز هویت، انکریپشن، لاگ و ...

اینجا چون بصورت global اوردیدش و مربوط به درخواست خاصی هم نیس اگر هدف به اصطلاح maintenance mode هست و بصورت موقتی سایت رو off میکنید یک ثابت یا کلید در کانفیگ به همین نام بسازید و همچنین روت و کنترلری هم براش ایجاد کنید و زمانی که این مقدار true بود با هدر 503 این صفحه رو نمایش بدید تا از لحاظ seo و بات‌های گوگل هم به مشکل نخورید.

محسن موحد ۲۹ آذر ۱۴۰۱، ۲۳:۵۳