将 URL 路由转换为函数参数 php mvc

2021-12-21 00:00:00 url-routing php model-view-controller

我正在为 PHP 项目编写自定义 MVC 框架,一切都很好,直到从 URL 路由获取参数为止.我坚持将 URL 路由的一部分动态传递给函数参数.我已经有一个方法,它只是为了内爆路由并使用数组作为函数参数,但我真的很想知道如何像在 CodeIgnitor 或 CakePHP 中那样做.

I'm writing a custom MVC framework for a PHP project and everything is great until it comes to getting arguments from the URL route. I'm stuck on passing parts of the URL route into a function argument dynamically. I already have a method which is just to implode the route and use the array for the function arguments but I would really like to know how to do it like in CodeIgnitor or CakePHP.

这就是我想要做的.网站网址将是...

Here's what i want to have done. The site url would be...

url: http://yoursite.com/profile/view/35/foo

在我的控制器中,我会...

and in my controller I would have...

<?php

Class profileController Extends baseController 
{

    public function view($ID, $blah)
    {
        echo $ID; //would show 35
        echo $blah; //would show foo
    }

}

?>

我真的很想知道这是如何完成的.非常感谢!

I would really like to know how this is done. Thanks a lot!

推荐答案

处理此问题的最简单方法是使用 call_user_func_array() 函数.您可以按如下方式使用它:

The easiest way to handle this is to use the call_user_func_array() function. You would use it as follows:

call_user_func_array(array($controller, $method), $params);

$controller 将是您已经创建的控制器对象,而 $method 将是控制器的方法.然后 $params 是从 URI 收集的参数数组.您只需要取出 URI 的控制器/方法部分.

$controller would be the controller object you have already created, and $method would be the controller's method. Then $params is an array of the parameters collected from the URI. You would just need to take out the controller/method portion of the URI.

您也可以使用 Reflection 来做到这一点,但这通常是比使用上述方法慢.

You could also do this using Reflection, but this typically is slower than using the above method.

相关文章