Лучше всего для этого явно записать их в новый файл конфигурации.
$config['controllers'] = array(
'blog',
'events',
'news', // etc.
);
В противном случае вы будете сканировать каталоги, которые будут поглощать ресурсы.Но вы можете сделать это так:
$controllers = array();
$this->load->helper('file');
// 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)
{
$controllers[] = str_replace(EXT, '', $file);
}
print_r($controllers); // Array with all our controllers
Поскольку имена файлов совпадают с именами контроллеров, теперь у вас должен быть массив всех ваших контроллеров.Это не идеально, хотя по нескольким причинам, но должно работать для большинства установок.
Лично я использую сильно измененную структуру каталогов, так что это не будет работать для меня, и некоторые контроллеры, которые я хотел бы игнорировать какЧто ж.Другим вариантом будет кэширование результатов в файл, но это отдельное руководство.
Я настоятельно рекомендую определить их в файле конфигурации, чтобы вы могли хранить другую полезную информацию, непосредственно связанную с вашим контролем доступа, и избегатьогромные накладные расходы на рекурсивное сканирование каталогов.