Список модулей из конфига

Подскажите, можно ли как либо получить список модулей, подключенных в конфиге ?




	// Application modules

	'modules' => array(

		'content',

                'admin',

	),



как получить этот список?

нашел, yii::app()->modules

вопрос, можно както автоматически сгенерировать скриптом заранее просканировав список имеющих модулей, и автоматом получить по yii::app()->modules

я к тому чтобы самому не прописывать массив модулей в ручную ?

Проход по файлам директории protected/modules делается стандартными средствами PHP в два счета :)

ну пробежаться скриптом не проблема, но вот проблема, если в файле \protected\config\config.php прописываю так


'modules'=>require(dirname(__FILE__).'/modules.php'),

а в этом \protected\config\modules.php прописываю


	   $dir = YiiBase::getPathOfAlias('application.modules'); 

	   $dh  = opendir($dir);

	   $files = array();

	   while (false !== ($filename = readdir($dh))) 

	   {

		  if ($filename != '.' && $filename != '..')

		  {

			 if (is_dir($dir.'/'.$filename))

			 {

				$files[$filename] = $filename;

			 }	

		  }						

	   }

return $files;

то ничего не работает, но если прописав в файле \protected\config\modules.php это


 return array('auto','news','roles');

тоесть перечислив директории модулей, работает нормально

Получается что динамически нельзя сформировать массив модулей…




 $files[$filename] = $filename;



Не уверен, что это должно работать. Попробуйте:




$files[] = $filename;



спасибо, так будет правильно, но вот к сожалению ничего не работает, скрипт уходит как я понял в долгий запрос

хотя результат массива одинаковый


print_r($files); // Array ( [0] => auto [1] => news [2] => roles ) 

и


print_r(array('auto','news','roles')); // Array ( [0] => auto [1] => news [2] => roles )

упс, нашёл причину, если заменить это


$dir = YiiBase::getPathOfAlias('application.modules');

на это


$dir = 'C:\wamp\www\mysite\protected\modules';

то всё будет в порядке

а ещё наверное лучше заменить на это


$dir = dirname(dirname(__FILE__)).'/modules';

наверное это будет более универсально, для указания пути автоматически и не прописывая в ручную

Если кому будет интересно, то вот полностью код файла \protected\config\modules.php




 <?php


	   $dir = dirname(dirname(__FILE__)).'/modules';

	   $dh  = opendir($dir);

	   $files = array();

	   while (false !== ($filename = readdir($dh))) 

	   {

		  if ($filename != '.' && $filename != '..')

		  {

			 if (is_dir($dir.'/'.$filename))

			 {

				$files[] = $filename;

			 }	

		  }						

	   }


return $files;