Skip to content

Modularity in CodeIgniter PHP5

World Wide Web Server edited this page Jul 4, 2012 · 13 revisions

[h2]Plugin Introduction[/h2]

I've become sick and tired of CodeIgniter's [b]$this[/b]-centeredness and I want to use static PHP5 classes to access core CodeIgniter objects such as libraries, models, view, and db. So, I have written a very simple set of wrapper classes.

[b]Advantages:[/b]

  • No more calling get_instance() when you need to access the framework inside a model, library, helper, or view
  • No more manual loading of libraries, models, or databases
  • More concise syntax
  • Support for multiple database connections

[b]Requirements:[/b]

  • CodeIgniter 1.5+
  • PHP5+

[b]Installation:[/b] This is a plugin so no core hacking is required. Simply download [b][url=http://codeigniter.com/wiki/5db90a196965c9991afabcf9e66726f6/]modular_11.zip[/url][/b] and extract it into your [b]application/plugins[/b] folder. Load it just like any other plugin.

[h2]How to use the Modularity Plugin[/h2]

[h3]Views[/h3]

[code]

Display a view -- old way

$this->load->view('myview', $data);

new way

View::show('myview', $data);

Load a view into a string variable -- old way

$pagetext = $this->load->view('myview', $data, TRUE);

new way

$pagetext = View::parse('myview', $data); [/code]

[h3]Libraries[/h3]

[code]

Do something with a library -- old way

$this->load->library('mylibrary'); $this->library->do_something();

new way

Libs('mylibrary')->do_something(); // the library automatically loads if needed [/code]

[h3]Models[/h3]

[code]

Fetch data with a model -- old way

$this->load->model('mydatamodel'); $this->mydatamodel->do_something();

new way

Models('mydatamodel')->do_something(); // the model automatically loads if needed [/code]

[h3]Databases[/h3]

[code]

Query a database -- old way (default database)

$this->load->database(); $query = $this->db->query($sql);

new way

$query = DB()->query($sql); // the database automatically loads if needed

Query a database -- old way (multiple connections)

$dbh1 = $this->load->database('db1', TRUE); $dbh2 = $this->load->database('db2', TRUE); $query1 = $dbh1->query($sql); $query2 = $dbh2->query($sql);

new way

$query1 = DB('db1')->query($sql); $query2 = DB('db2')->query($sql); [/code]

[h3]Inside libraries, helpers, or views[/h3]

[code]

old way

$CI =& get_instance(); $CI->load->model('mymodel'); $CI->mymodel->do_something();

new way -- no calling get_instance()!

Models('mymodel')->do_something(); [/code]

Clone this wiki locally