通常在opencart中加载模型时,您将执行以下操作:
$this->load->model('example');
// calling the method inside the model
$this->model_example->method();
但是,现在我有一个具有构造函数的模型,如下所示:
public function __construct( $filepath, $timezone, $priority, $registry){
// code...
}
如您所见,我需要使用构造函数中所需的所有参数加载模型,因此在这种情况下如何加载模型?
答案 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();
}
}