Kohana: файлы настроек для тем и вложенных тем - PullRequest
0 голосов
/ 15 августа 2011

Я хочу создать базовую тему с файлом конфигурации по умолчанию, а затем я хочу создать дополнительные темы с файлами конфигурации, которые объединены с основной темой. Должен ли я использовать класс Kohana :: config для управления этим или было бы лучше обрабатывать это вручную, включая массив config и объединяя его с master config? Пока что мне не удалось загрузить файлы конфигурации, потому что они находятся в их собственном каталоге.

По сути, я пытаюсь настроить структуру вроде:

application
|--> classes
     |--> myclass
          |--> myclass.php  // default parent class. Loads the config
          |--> config.php   // array of default config settings
          |--> theme
               |--> blue
               |    |--> blue.php   // extends myclass.php
               |    |--> config.php // merges over the default config settings
               |--> red
               |    |--> red.php    // extends myclass.php
               |    |--> config.php // merges over the default config settings
               |--> green
                    |--> green.php  // extends myclass.php
                    |--> config.php // merges over the default config settings

Так что я могу тогда назвать что-то вроде:

$theme = new Myclass_Theme_Red_Red();

и загрузите тему с настройками по умолчанию из Myclass_Myclass, а затем объедините красную тему со значениями по умолчанию. Я надеюсь, что это имеет смысл.

Так, каков наилучший способ обработки настроек конфигурации в структуре такого рода - или есть ли лучший подход полностью? Я не хочу перемещать все файлы конфигурации в application / config, так как я бы предпочел, чтобы они сохранялись с отдельными темами.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2011

Если вы отчаянно хотите сохранить свои конфигурационные файлы с классами, вы можете сделать каждую тему отдельным модулем.

Нет необходимости делать каждую тему отдельным модулем.На самом деле, имеет смысл иметь по одной папке на модуль с вашими темами.

Скажем, у вас есть модуль, а внутри этого модуля у вас есть каталог тем.

my-module
 |- classes  
 |- config (your module's config files go in here)
 |-- my-module.php  
 |- themes (in own directory)
 |-- green  
 |--- config
 |---- green-config.php
 |-- red  
 |-- blue

Тогда вы можетеЗагрузите файл конфигурации следующим образом:

Kohana::$config->attach(new Kohana_Config_File('themes/green/config'));
$config = Kohana::$config->load('green-config');
echo $config->test; //Hello World!

Содержимое вашего green-config.php

<?php defined('SYSPATH') or die('No direct access allowed.');
return array('test'=>'Hello World!');

Кроме того, чтобы быстро проверить, доступен ли файл для Kohana:

Kohana::find_file('themes', 'green/config/green-config');
0 голосов
/ 15 августа 2011

Я бы поместил файлы конфигурации в каталог конфигурации, который является родственным каталогом classes .

Итак, ваша новая структура каталогов будет:

application  
 |- classes  
 |- config (your files go in here)
 |-- theme (and can be in their own namespaced directory)
 |--- green  
 |--- red  
 |--- blue

Это где ваши файлы конфигурации должны всегда идти.Если вам нужно сделать что-то, что Kohana не поддерживает, тогда вы можете добавить специальную программу чтения конфигурации в ваш загрузочный модуль (modules) [1].

Kohana::$config->attach(new Kohana_Config_File);

[1] Присоединение нового считывателя конфигурации в Kohana

Типичным примером может быть загрузка файлов конфигурации из подкаталога, что может быть достигнуто с помощью:

Kohana::$config->attach(new Kohana_Config_File);
Kohana::$config->attach(new Kohana_Config_File('config'.DIRECTORY_SEPARATOR.Kohana::$environment));

Это позволяет мне использовать различные настройки конфигурации для среды с Kohana.

Если вы отчаянно хотите сохранить свои файлы конфигурации с классами, вы можете сделать каждую тему отдельноймодуль.

...