-1

I need to pass parameters to my Opencart library class which is loaded using $this->load->library('MyLib'). The trouble is that the loader only accepts a single argument. I'd like to do something like this:

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

How can I pass an array of arguments to my library class when it's loaded?

Ntiyiso Rikhotso
  • 644
  • 6
  • 15

1 Answers1

1

The loader's library() method only allows a single argument: $route, but fortunately $this->registry is passed as a single argument to the library's constructor. To pass additional parameters you can simply assign them as properties to the registry class before loading your library like this:

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

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

Then, you can access that property inside inside your library constructor like this:

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

Actually, you can access anything in the registry there as well which is useful for getting all kinds of data like config, session, cart, etc.