Каркасная файловая система Kohana. Как добавить папку в эту каскадную цепочку?

Как работает KO3:
1. Получить файлы из «системы» 2. Замените некоторые на каждый используемый «модуль» 3. И наконец — заменить на «приложение»

Что мне нужно сделать, чтобы добавить в эти цепочки еще одну папку?
Как расширить этот каскад?
Например, я хочу загрузить классы, как здесь:

  1. «/ Система /»
  2. «/ Модули /»
  3. «/ до-плагинов /«
  4. «/ плагины /«
  5. «/ Прежде, чем-приложения /«
  6. «/приложение/»

и я этого хочуплагины«имеет ту же функциональность, что и»модули«Чтобы я мог инициализировать каждый плагин как модуль, путем:

    Kohana::plugins(array(
'plugin_1'       => PLUGPATH.'plugin_1',       // Plugin 1
'plugin_2'       => PLUGPATH.'plugin_2',       // Plugin 2
// and so on
));

И что мне нужно сделать, чтобы создать еще одну похожую папку приложения, которая будет автоматически загружаться перед запуском приложения? (»/ Прежде, чем-приложения /» а также «/ до-плагинов /«)

Я знаю, что должен положить в приложение / classes / Kohana / Core.php копию из SYSPATH и сделать что-то. Но что? Помоги мне, пожалуйста!

0

Решение

Вы на самом деле ошиблись. Kohana::auto_load() использования Kohana::find_file('classes', $file) для ваших занятий. Часть, которая применяется здесь

foreach (Kohana::$_paths as $dir)
{
if (is_file($dir.$path))
{
// A path has been found
$found = $dir.$path;

// Stop searching
break;
}
}

и с тех пор Kohana::$_paths является

array(11) (
0 => string(32) "/var/www/guides/3.3/application/"1 => string(33) "/var/www/guides/3.3/modules/.../"9 => string(38) "/var/www/guides/3.3/modules/.../"10 => string(27) "/var/www/guides/3.3/system/")

Приложение будет найдено в первую очередь. Если там ничего не найдено, то Кохана будет искать в модулях. И только если не было найдено существующего класса, системный каталог будет изучен.

Теперь редактируя Kohana::$_paths Вы можете легко контролировать порядок, используемый Kohana для автозагрузки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]