我正在尝试创建一个MVC应用程序,目前正在处理Bootstrap文件。我获取URL并将其分解然后将部件分配给Controller Method和Method参数。但是,我找不到将多个参数传递给方法的方法。
mysite的/ NEWUSER /登录/ USER_NAME / user_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_properties
是数组
如果函数是:
public function login($user_name,$user_pass){
// some code
}
我需要传递它们是Array的url属性,我的函数中有两个变量 我们的想法是将数组转换为变量
或者你可以传递一个关于如何将参数从URL传递给我的模型的想法
答案 0 :(得分:0)
尝试此功能:http://www.php.net/manual/en/function.call-user-func-array.php
call_user_func_array ($new_instans->{$site_method} , $this->model_properties )
答案 1 :(得分:0)
如果你说$this->model_properties
是一个数组,你可以做两件事之一。
案例1:维护函数声明,并在调用函数之前访问数组的元素。
login()
函数(维护它的声明):
public function login($user_name,$user_pass){
// some code
}
要调用该函数,请执行以下操作:
$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($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
的数组元素的内容分配给变量,允许您独立处理这些值。