如何在opencart中传递模型类构造方法中的参数?

时间:2017-05-09 02:24:30

标签: php opencart

通常在opencart中加载模型时,您将执行以下操作:

$this->load->model('example');
// calling the method inside the model
$this->model_example->method();

但是,现在我有一个具有构造函数的模型,如下所示:

public function __construct( $filepath, $timezone, $priority, $registry){
  // code...
}

如您所见,我需要使用构造函数中所需的所有参数加载模型,因此在这种情况下如何加载模型?

2 个答案:

答案 0 :(得分:1)

该构造需要一个注册表变量。您可以这样处理

class ControllerMyClass extends Controller {
    public function __construct() {
        global $registry;
        parent::__construct($registry);

        $this->load->model('example');
        // calling the method inside the model
        $this->model_example->method();
    }
}

我希望这会有所帮助。

答案 1 :(得分:0)

你可以做什么来调用父构造函数,并使其他参数可选。唯一的问题是你仍然不会使用这些新参数,因为加载功能在不更改加载器的情况下不允许这样做。

示例构造函数

public function __construct( $registry, $filepath='', $timezone='', $priority='' ) {
  parent::__construct($registry);

  // Your code here
}

装载程序中的模型函数

public function model($model) {
    $file = DIR_APPLICATION . 'model/' . $model . '.php';
    $class = 'Model' . preg_replace('/[^a-zA-Z0-9]/', '', $model);

    if (file_exists($file)) {
        include_once($file);

        $this->registry->set('model_' . str_replace('/', '_', $model), new $class($this->registry));
    } else {
        trigger_error('Error: Could not load model ' . $file . '!');
        exit();
    }
}