CodeIgniter autoload specific classes

17,632

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');
Share:
17,632

Related videos on Youtube

ltdev
Author by

ltdev

Updated on June 04, 2022

Comments

  • ltdev
    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
    Albzi almost 10 years
    Then you can do this: $this->load->model('Model_name'); inside of the controller you want.
  • Ijas Ameenudeen
    Ijas Ameenudeen almost 10 years
    If the Downvoter can explain why this is down voted, It will be more clear for others also !!
  • Angel
    Angel over 8 years
    $autoload['libraries'] = array('database', 'session','folder/your-specific_file'); can we do like this?
  • Mohan
    Mohan over 8 years
    autoload assumes that you have put your custom library in the library folder provided by Codeigniter.
  • Syrlia
    Syrlia over 5 years
    I 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.