CodeIgniter autoload specific classes
Solution 1
I only wanted to auto load Public_Controller
in the frontend and Admin_Controller
in admin, so autoload.php
is out. In autoload.php
the files are loaded globally. The __autoload()
function only tries to auto load a class when it's called, but not found.
Solution 2
Go to applications/config/autoload.php
and in there you can edit what you need.
They are in arrays and seperated by packages
, libraries
, helpers
, config
, languages
and models
.
eg
$autoload['libraries'] = array('database', 'session');
$autoload['helper'] = array('url', 'html', 'form');
Related videos on Youtube
ltdev
Updated on June 04, 2022Comments
-
ltdev almost 2 years
I have created two controllers, the Public_Controller and the Admin_Controller inside ./application/libraries folder, following Phil's Sturgeon example.
What I want to do is to autoload the Public_Controller and Admin_Controller specificly, so I created this autoload function inside ./application/config.php
function __autoload($class) { // Autoload only Public_Controller and Admin_Controller if (strpos($class, 'CI_') !== 0) { $file = APPPATH . 'libraries/'. $class .'.php'; if ( file_exists($file) && is_file($file) ) { @include_once($file); } } }
The problem with this I think is that I have more files included inside the libraries folder, so those too are autoloaded, which is not what I want. So instead I tried to do a small change to the first if statement, like this:
if ( in_array($class, array('Public_Controller, Admin_Controller')) ) // instead of strpos
in order to target only these two classes, but this does not seem to work. Any ideas what I might doing wrong?
-
Albzi almost 10 yearsThen you can do this:
$this->load->model('Model_name');
inside of the controller you want. -
Ijas Ameenudeen almost 10 yearsIf the Downvoter can explain why this is down voted, It will be more clear for others also !!
-
Angel over 8 years$autoload['libraries'] = array('database', 'session','folder/your-specific_file'); can we do like this?
-
Mohan over 8 yearsautoload assumes that you have put your custom library in the library folder provided by Codeigniter.
-
Syrlia over 5 yearsI have problems with "You'll find instructions in that file corresponding to each type of item." I need an autoloader for controllers, which isn't supported.