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.

0
Das123 15 sierpień 2011, 02:39

2 odpowiedzi

Najlepsza odpowiedź

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.

0
The Pixel Developer 15 sierpień 2011, 16:13
Dzięki za odpowiedzi. :) Myślę, że masz rację, jeśli chodzi o przechowywanie wszystkich konfiguracji, w których Kohana chce, aby były przechowywane. Na tym etapie właśnie stworzyłem zmienną klasy o nazwie $config i dołączam tablicę config do konstruktora klasy. Pod-tematy są następnie po prostu dodawane do miksu: $new_config = include("config.php"); $this->config = $new_config + $this->config; Więc w zasadzie używamy standardowej tablicy zamiast tablicy konfiguracyjnej.
 – 
Das123
15 sierpień 2011, 23:16

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');
0
goliatone 28 grudzień 2011, 14:05