Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MVC中分解url和传递部分_Php_Model View Controller - Fatal编程技术网

Php 在MVC中分解url和传递部分

Php 在MVC中分解url和传递部分,php,model-view-controller,Php,Model View Controller,我正在尝试创建一个MVC应用程序,目前正在处理引导文件。我获取URL并分解它,然后将部分分配给控制器方法和方法参数。但是,我找不到将多个参数传递给该方法的方法 mysite/newuser/login/user\u name/user\u pass newuser -> Controler of the site login -> currently used method user_name -> first argument user_pass -> secon

我正在尝试创建一个MVC应用程序,目前正在处理引导文件。我获取URL并分解它,然后将部分分配给控制器方法和方法参数。但是,我找不到将多个参数传递给该方法的方法

mysite/newuser/login/user\u name/user\u pass

newuser -> Controler of the site
login   -> currently used method

user_name -> first argument
user_pass -> second_argument
比如说

$url = "mysite/newuser/login/user_name/user_pass";

$path = expload('/',$url);


$this->controler = $path[0];
$this->method    = $path[1];
对于参数,我创建了第二个数组,如下所示:

// Set the substring path as method properties
if (isset($path[2])) {

    $this->url_sub_path = $path[2];

    $sub_path = explode('/', $this->url_sub_path);
     if (isset($sub_path)) {

         $this->model_properties = $sub_path;
当我为控制器分配一个集合时

$site_controler = $this->controler;
include CONTROLER.$site_controler . '.php';

$new_instans = new $site_controler();
但问题在于:

$site_method = $this->model;
$new_instans->{$site_method}($this->model_properties);
$this->model\u属性
是数组

如果功能是:

public function login($user_name,$user_pass){
    // some code
}
我需要传递url属性,它们是数组,我的函数中有两个变量 其思想是将数组转换为变量

或者,您可以介绍如何将参数从URL传递到my model,请尝试以下功能:


如您所说,如果
$this->model_properties
是一个数组,则可以执行以下两种操作之一

案例1:维护函数声明,并在调用函数之前访问数组元素

login()
函数(维护其声明):

要调用该函数,请执行以下操作:

$array = $this->model_properties;
$param1 = $array[0]; //The numeric index may vary, depending on how this array was populated
$param2 = $array[1];
$new_instans->{$site_method}($param1, $param2);

案例2:更改函数声明以接收数组,并访问函数中的数组元素

使用
login()
函数,更改声明:

public function login($user_name,$user_pass){
 // some code
}
public function login($arrayParams){
    //Access the parameters like this
    $param1 = $arrayParams[0]; //The numeric index may vary, depending on how this array was populated
    $param2 = $arrayParams[1];

    //The rest of your code...
}
要调用函数,只需传递数组,就像您已经在做的那样:

$new_instans->{$site_method}($this->model_properties);

无论您选择哪个版本来解决问题,重要的部分是:

$param1 = $array[0];
$param2 = $array[1];
这里,您将索引
0
1
的数组元素的内容分配给一个变量,允许您独立地处理这些值

$param1 = $array[0];
$param2 = $array[1];