我正在重新编码一些代码。 这是我现在正在运行的项目。
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)作为它的参数。谢谢你的帮助。
答案 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。根据文档,那一个是在现场创建的两个项目的数组。