数组作为函数参数

时间:2013-07-23 15:03:05

标签: php arrays function

我正在重新编码一些代码。 这是我现在正在运行的项目。

class store extends TModel{
    public function render_cart( $a=0, $b=0, $c=0 ){
        echo '<pre>'; var_dump( $a=0, $b=0, $c=0 ); echo '</pre>';
    }
}

class TController extends TObject{
    function getModel($model=''){
        include( TPATH_COMPONENT.'models'.DS.$model.'.php' );
        $this->_model = new $model;
        return false;
    }
    function get($method=''){
        $args = func_get_args();

        return $this->model->$method( $args );
    }
}

$controller->getModel('store');        
$cart = $controller->get('render_cart', 1, 2, 3 );

我想从TController :: get转移args到store :: render_cart($ a = 0,$ b = 0,$ c = 0)作为它的参数。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您需要编写如下方法:

function get($method=''){
    $args = func_get_args();
    $method = array_shift($args);
    return call_user_func_array([$this->model, $method], $args);
}

将方法名称和参数输入$args后,使用array_shift将方法名称与参数隔离。

要将参数(编号未知)传递给模型的方法,您需要使用call_user_func_array。您已经拥有此调用的arguments数组,但仍需要callable。根据文档,那一个是在现场创建的两个项目的数组。