Autoload classes
Posted: Mon Dec 30, 2013 3:18 am
Misschien een handige tip voor degenen die zelf ook wel eens mod maken, met een kleine aanpassing in system/engine/registry.php kan je bv models autoloaden.
Een voobeeld:
Normaliter moet je eerst doen:
Vervolgens kan je een functie aanroepen:
Met een kleine aanpassing in de registry.php kan je die eerste regel $this->load->... vergeten en direct doen.
En dat model word automagisch geladen.
De enige aanpassing die hier voor nodig is in system/engine/registry.php is deze functie:
vervangen door:
Zelf heb ik hier veel meer autoloaders in staan en die heb ik weer weggehaald uit o.a de index.php
Hierdoor kan een site wat sneller laden, want er word alleen geladen wat nodig is, en dat is bij bv ajax aanroepen wel prettig.
Happy coding ;-)
Een voobeeld:
Normaliter moet je eerst doen:
Code: Select all
$this->load->model('account/address');
Code: Select all
$this->model_account_address->getAddresses();
Code: Select all
$this->model_account_address->getAddresses();
De enige aanpassing die hier voor nodig is in system/engine/registry.php is deze functie:
Code: Select all
public function get($key) {
return (isset($this->data[$key]) ? $this->data[$key] : NULL);
}
Code: Select all
public function get($key) {
if(!isset($this->data[$key])){
$parts = explode('_', $key);
if(isset($parts[0])){
switch ($parts[0]){
case 'mail' :
$this->data['load']->library('mail');
$this->set('mail', new Mail());
break;
case 'model' :
array_shift($parts);
$this->data['load']->model(implode('/', $parts));
break;
}
}
}
return (isset($this->data[$key]) ? $this->data[$key] : NULL);
}
Hierdoor kan een site wat sneller laden, want er word alleen geladen wat nodig is, en dat is bij bv ajax aanroepen wel prettig.
Happy coding ;-)