Raymon Raymon - 6 months ago 25
PHP Question

CodeIgniter - How to get a list of all my controllers dynamically?

I need to run a function to do some actions with each controller-name on my project.
My function is defined on a controller like this:

class Some_Controller extends CI_Controller{
public function someActions(){
// $listOfAllControllers = some_method_I_need_for_my_answer();
foreach($listOfAllControllers as $controllerName){
// some_action($controllerName)

What I want is a dynamic list of all controllers which exists in my project.


You need to scan your /application/controllers directory and remove file extension from it

    $controllers = array();

    // Scan files in the /application/controllers directory
    // Set the second param to TRUE or remove it if you 
    // don't have controllers in sub directories
    $files = get_dir_file_info(APPPATH.'controllers', FALSE);

    // Loop through file names removing .php extension
    foreach ( array_keys($files) as $file ) {
        if ( $file != 'index.html' )
            $controllers[] = str_replace('.php', '', $file);
    print_r($controllers); // Array with all our controllers


You can also follow this link to achieve this

controller list