شی گرایی

i-php-i

Active Member
کسی از دوستان می تونه توضیح بده که کار این شرط چیه؟

PHP:
if(method_exists($controller,$action))
            {
                $controller->{$action}($param[0],$param[1],$param[2],$param[3],
            $param[4],$param[5],$param[6],$param[7]);    
            }
 

Masoud1365

مدیر انجمن
اگر متد action توی کنترلر وجود داشته باشه پارامترهای متد رو ست میکنه !
 

i-php-i

Active Member
اگه کاراکترهای {} رو از اطراف اکشن حذف کنم؛ مشکلی پیش می یاد؟

وقتی تعداد پاراکترها کم باشن، این کد نباید ارور بده؟ چون الان 8 تا پارامتر داره و اگه 2 تا پارامتر بهش بدم ارور نمی ده؟
 

Masoud1365

مدیر انجمن
بستگی به نوع کدنویسیش داره با این چند خط که گذاشتین کلا همین مفهوم فقط میرسه !
این که حالا چه اتفاقی برای پارامتها میوفته و اینا باید بیشتر کد بررسی بشه !
 

i-php-i

Active Member
کد اصلی اینه:

PHP:
public function load_controller()
    {
        $controller_name = $this->uri['controller'];
        $action = $this->uri['action'];
        $param = $this->uri['param'];
        $model = $this->uri['model'];
        $controller_name = ucwords($controller_name);
        $file = ROOT.DS.'controller'.DS."$controller_name".'_controller.php';
         
        if(file_exists($file))
        {
            require_once($file) ; 
            
            $controller = new $controller_name() ; 
            
            if(method_exists($controller,$action))
            {
                $controller->{$action}($param[0],$param[1],$param[2],$param[3],
            $param[4],$param[5],$param[6],$param[7]);    
            }
            else
            {
//404
            }
        }
        else
        {
//404
        }
    }
 

Masoud1365

مدیر انجمن
ببینید این کدی که شما اینجا گذاشتید یه تیکه از یه فریم ورک هست !
مثلا این قسمت :
$param = $this->uri['param'];
من نمیدونم پارامترها رو با چه فرمتی میگیره ( یعنی استرینگ هست ؟ آآرایه هست ؟ شیئ هست ؟ )
بعدش آیا این پارامترهایی که میگیره اولین پارامترهای مربوط به اکشن هست ( کل پارامترها ) و بقیه option های مربوط به اکشن !
 

i-php-i

Active Member
در ادامه کدی که فایل حاوی این متد رو اینکلود می کنه رو قرار دادم:
فرمت لینکها هم به شکل روبرو هست: /controler/action/param1/param2/param3
PHP:
private function router_fun()
    {
        require_once(ROOT.DS.'core'.DS.'Router.php');

        $url = $_SERVER['REQUEST_URI'];
        $url = explode("/" ,$url);
        array_shift($url);

        $uri['controller'] = $url[0];
        array_shift($url);
        $uri['action'] = $url[0];
        array_shift($url);
        $uri['param'] = $url;

        $router = new Router();
        $router->uri = $uri;
        $router->load_controller();
    }
 

جدیدترین ارسال ها

بالا