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。この呼び出しの引数配列は既にありますが、それでもcallableが必要です。これは、ドキュメントごとに 2 つの項目の配列としてその場で作成されます。

于 2013-07-23T15:04:53.477 に答える