在 Opencart 中加载我的库时如何传递参数?

How can I pass parameters when loading my library in Opencart?

我需要将参数传递到使用 $this->load->library('MyLib') 加载的 Opencart 库 class。问题是加载器只接受一个参数。我想做这样的事情:

$this->load->library('MyLib', array('parameters') );

如何在我的库 class 加载时将参数数组传递给它?

加载器的 library() 方法只允许一个参数:$route,但幸运的是 $this->registry 作为单个参数传递给库的构造函数。要传递额外的参数,您可以简单地将它们作为属性分配给注册表 class,然后再像这样加载您的库:

$params = [
    'param_1' => 'abc',
    'param_2' => 'def'
];
$this->registry->set('MyLib_params', $params);

// now load your library
$this->load->library('MyLib');

然后,您可以像这样在库构造函数中访问 属性:

class MyLib {
    public function __constructor($registry) {
        $this->params = $registry->get('MyLib_params');
        // do stuff with $this->params
    }
}

实际上,您也可以在那里访问注册表中的任何内容,这对于获取配置、会话、购物车等各种数据很有用。