PHP:从数组中调用一个类?

Ind*_*ial 5 php oop routes class

我刚刚建立了一个函数来获取URI字符串并将其转换为数组,如下所示.此示例基于URLhttp://mydomain.com/mycontroller/mymethod/var

Array
(
    [0] => mycontroller
    [1] => mymethod
    [2] => var
)
Run Code Online (Sandbox Code Playgroud)

如果我写new $myArray[0];,我将加载myController该类,但是我可以创建一个函数来处理方法的最终存在以及它们各自变量的调用吗?

Gor*_*don 8

我不确定你的意思是"处理方法的最终存在及其各自变量的调用",但你可能会追随call_user_func_array:

call_user_func_array(
    array($myArray[0], $myArray[1]),
    array($myArray[2])
);
Run Code Online (Sandbox Code Playgroud)

如果您想为您创建的具体实例执行此操作$controller = new $myArray(0),请替换$myArray[0]$controller,例如

$controller = new $myArray(0);
call_user_func_array(
    array($controller, $myArray[1]),
    array($myArray[2])
);
Run Code Online (Sandbox Code Playgroud)

或者通过new $myArray[0],如果你不关心实例的电话后丢失

call_user_func_array(
    array(new $myArray[0], $myArray[1]),
    array($myArray[2])
);
Run Code Online (Sandbox Code Playgroud)

否则,你会得到一个E_STRICT通知,不能引用$this在什么myMethod是.另请参阅有关可能的回调格式PHP手册.


要验证实际存在的方法和类,可以使用

例:

if (method_exists($myArray[0], $myArray[1])) {
    call_user_func_array(*/ … */)
}
Run Code Online (Sandbox Code Playgroud)

如果有其他意思,请澄清您的问题.在旁注中,这可能是之前回答的,但由于我不确定问题是什么,我也不确定选择哪一个.