0

我目前正在重新编码一些代码。它来自我目前正在运行的项目。

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 转移到 store::render_cart( $a=0, $b=0, $c=0 ) 作为参数。谢谢你的帮助。

4

1 回答 1

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。该文件是在现场创建为每个文档的两个项目的数组。

于 2013-07-23T15:04:53.477 回答