Chcę zbudować motyw podstawowy z domyślnym plikiem konfiguracyjnym, a następnie chcę zbudować motywy podrzędne z plikami konfiguracyjnymi, które są połączone z motywem głównym. Czy powinienem użyć klasy Kohana::config do zarządzania tym, czy najlepiej byłoby poradzić sobie z tym ręcznie, dołączając tablicę konfiguracyjną i łącząc ją z konfiguracją główną? Jak dotąd nie udało mi się w ogóle załadować plików konfiguracyjnych, ponieważ umieściłem je w ich własnym katalogu.
Zasadniczo to, co próbuję zrobić, to skonfigurować strukturę, taką jak:
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
Więc mogę wtedy zadzwonić na coś takiego:
$theme = new Myclass_Theme_Red_Red();
I załaduj motyw z domyślnymi konfiguracjami z Myclass_Myclass, a następnie scal czerwony motyw z ustawieniami domyślnymi. Mam nadzieję, że to ma sens.
Jaki jest więc najlepszy sposób obsługi ustawień konfiguracyjnych w ramach tego rodzaju struktury – czy może jest zupełnie lepsze podejście? Nie chcę przenosić wszystkich plików konfiguracyjnych do application/config, ponieważ wolałbym, aby były one przechowywane z indywidualnymi motywami.
2 odpowiedzi
Umieściłbym pliki konfiguracyjne w katalogu config, który jest rodzeństwem katalogu classes.
Więc twoja nowa struktura katalogów będzie wyglądać tak:
application
|- classes
|- config (your files go in here)
|-- theme (and can be in their own namespaced directory)
|--- green
|--- red
|--- blue
Tutaj zawsze powinny znajdować się twoje pliki konfiguracyjne. Jeśli potrzebujesz zrobić coś, czego Kohana nie obsługuje, możesz dodać niestandardowy czytnik konfiguracji w swoim (modułach) bootstrapie [1].
Kohana::$config->attach(new Kohana_Config_File);
[1] Dołączanie nowego czytnika konfiguracji w Kohana
Typowym przykładem byłoby załadowanie plików konfiguracyjnych z podkatalogu, co można osiągnąć za pomocą:
Kohana::$config->attach(new Kohana_Config_File);
Kohana::$config->attach(new Kohana_Config_File('config'.DIRECTORY_SEPARATOR.Kohana::$environment));
Dzięki temu mogę używać różnych ustawień konfiguracyjnych w środowisku Kohana.
Jeśli desperacko chcesz zachować swoje pliki konfiguracyjne z klasami, możesz chcieć, aby każdy motyw był osobnym modułem.
Jeśli desperacko chcesz zachować swoje pliki konfiguracyjne z klasami, możesz chcieć, aby każdy motyw był osobnym modułem.
Nie ma potrzeby, aby każdy motyw był osobnym modułem. Właściwie bardziej sensowne jest posiadanie jednego folderu na moduł z twoimi motywami.
Załóżmy, że masz moduł, a wewnątrz tego modułu masz katalog tematów.
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
Następnie możesz załadować plik konfiguracyjny w ten sposób:
Kohana::$config->attach(new Kohana_Config_File('themes/green/config'));
$config = Kohana::$config->load('green-config');
echo $config->test; //Hello World!
Zawartość twojego green-config.php
<?php defined('SYSPATH') or die('No direct access allowed.');
return array('test'=>'Hello World!');
Ponadto, aby szybko sprawdzić, czy plik jest dostępny dla Kohana:
Kohana::find_file('themes', 'green/config/green-config');
Podobne pytania
Nowe pytania
kohana
Framework HMVC PHP5, który dostarcza zestaw komponentów do tworzenia aplikacji internetowych. Pamiętaj, aby w pytaniu podać konkretną wersję.