Klasa Config
Klasa Config pozwala na pobieranie zmiennych konfiguracyjnych. Zmienne te, mogą pochodzić z domyślnego pliku konfiguracyjnego (application/config/config.php) lub z plików, ktore sam stworzyłeś.
Uwaga: Ta klasa jest ładowana automatycznie przez system, dlatego nie musisz tego robić samodzielnie.
Anatomia pliku konfiguracyjnego
Domyślnie, CodeIgniter ma jeden główny plik konfiguracyjny, który znajduje się w application/config/config.php. Jeśli otworzysz ten plik, w swoim edytorze zobaczysz, że kolejne wartości konfiguracyjne są umieszczone w tablicy $config.
Możesz dodać własne wartości konfiguracyjne do tego pliku lub trzymać nowe wartości osobno (zakładając, że w ogóle ich potrzebujesz) - w tym celu po prostu stwórz nowy plik i zachowaj go w folderze config.
Uwaga: Jeśli tworzysz własne pliki konfiguracyjne, używaj tego samego formatu jaki użyty jest w głównym pliku konfiguracyjnym. Umieszczaj kolejne wartości w tablicy $config. CodeIgniter w sposób inteligentny obsłuży te pliki, nawet w sytuacji gdy tablice noszą takie same nazwy (zakładając oczywiście, że indeksy obu tych tablic są unikalne).
Ładowanie plików konfiguracyjnych
Uwaga: CodeIgniter automatycznie ładuje główny plik konfiguracyjny (application/config/config.php), więc do ładowania plików konfiguracyjnych będziesz zmuszony tylko wtedy, gdy samodzielnie jakiś stworzysz.
Są dwa sposoby na ładowanie plików konfiguracyjnych:
- Ładowanie ręczne
Aby załadować jeden z Twoich plików konfiguracyjnych w kontrolerze który tego potrzebuje możesz wykonać następujący kod:
$this->config->load('filename');
Gdzie filename jest nazwą Twojego pliku konfiguracyjnego, bez rozszerzenia .php.
Jeśli chcesz załadować wiele plików konfiguracyjnych, to zostaną one połączone w jedną tablicę konfiguracyjną. W takim wypadku, jeśli w rożnych plikach konfiguracyjnych znajdzie się tablica z takimi samymi indeksami, może dojść do kolizji. Aby tego uniknąć, można ustawić drugi parametr na wartość TRUE. Wtedy każdy z plików konfiguracyjnych będzie przechowywany w tablicy o indeksie odpowiadającym nazwie pliku konfiguracyjnego. Przykład:
// Przechowywanie w tablicy według takiego prototypu: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);Aby dowiedzieć się w jaki sposób pobierać dane wczytane w taki sposób, proszę zapoznać się z sekcją o tytule Pobieranie zmiennych konfiguracyjnych, która dostępna jest ponizej.
Trzeci parametr pozwala na uniknięcie wyświetlania komunikatów błędu w przypadku, gdy dany plik konfiguracyjny nie istnieje:
$this->config->load('blog_settings', FALSE, TRUE);
- Automatyczne ładowanie
Jeśli uznasz, że dany plik konfiguracyjny będzie potrzeby globalnie, dla całej aplikacji, możesz ładować go automatycznie. Aby to zrobić, otwórz plik autoload.php, który znajduje się w application/config/autoload.php i dodaj nazwę pliku konfiguracyjnego do odpowiedniej tablicy.
Pobieranie zmiennych konfiguracyjnych
Aby pobrać zmienną z pliku konfiguracyjnego, należy skorzystać z następującej funkcji:
$this->config->item('item name');
Gdzie item name jest indeksem tablicy $config, który chcemy otrzymać. Dla przykładu, aby otrzymać wartość ustawionej wersji językowej należy zrobić tak::
$lang = $this->config->item('language');
Funkcja zwraca FALSE (boolean) jeśli wartość, którą próbujesz pobrać nie istnieje.
Jeśl korzystasz w wywołaniu funkcji $this->config->load z drugiego parametru, aby przypisać zmienne konfiguracyjne do specyficznego indeksu, możesz się odwoływać do takich zmiennych poprzez określenie indeksu w drugim parametrze funkcji $this->config->item(). Przykład:
// Ładuje plik konfiguracyjny o nazwie blog_settings.php i przypisuje do indeksu o nazwie "blog_settings"
$this->config->load('blog_settings', TRUE);
// Zwaraca zmienną konfiguracyjną o nazwie site_name, która znajduje się w tablicy blog_settings
$site_name = $this->config->item('site_name', 'blog_settings');
// Alternatywny sposób na wybranie tej samej zmiennej:
$blog_config = $this->config->item('blog_settings');
$site_name = $blog_config['site_name'];
Ustawianie zmiennych konfiguracyjnych
Jeśli chciałbyś ustawić zmienną konfiguracyjną w sposób dynamiczny lub zmienić istniejącą wartośc, możesz to zrobić w ten sposób:
$this->config->set_item('item_name', 'item_value');
Gdzie item_name jest indeksem tablicy $config, który chcesz zmienić, a item_value jest jej wartością.
Środowiska pracy
Możesz załadować różne pliki konfiguracyjne w zależności od aktywnego środowiska. Stała ENVIRONMENT jest zdefiniowana w pliku index.php i opisana szczegółowo w rozdziale Obsługa wielu środowisk.
Aby stworzyć zależne od środowiska pliki konfiguracyjne, stwórz lub skopiuj plik konfiguracyjny do lokalizacji application/config/{ENVIRONMENT}/{FILENAME}.php
Dla przykładu, aby stworzyć plik config.php tylko dla środowiska produkcyjnego, należy zrobić tak:
- Stwórz folder application/config/production/
- Skopiuj istniejący plik config.php do powyższego folderu
- Edytuj plik application/config/production/config.php tak, aby odpowiadał Twoim ustawieniom środowiska produkcyjnego
Kiedy ustawisz stałą ENVIRONMENT na wartość 'production', wtedy zostanie załadowany plik config.php z powyższego folderu.
W specyficznych dla środowiska pracy folderach, możesz umieszczać następuące pliki konfiguracyjne:
- Domyślne pliki konfiguracyjne CodeIgnitera
- Twoje własne pliki konfiguracyjne
Uwaga: CodeIgniter zawsze próbuje najpierw załadować pliki z ustawionego środowiska pracy. Jeśli dany plik nie istnieje, to ładowany jest globalny plik konfiguracyjny (czyli ten, który znajduje się w folderze application/config/). To oznacza, że nie musisz umieszczać wszystkich swoich plików konfiguracyjnych w specyficznym dla środowiska pracy folderze − wystarczy że znajdą się tam pliki, które zmieniają się w zależności od środowiska pracy.
Funkcje pomocnicze
Klasa Config ma następujące funkcje pomocnicze:
$this->config->site_url();
Ta funkcja zwraca adres URL Twojej strony, razem z wartością "index", którą określiłeś w pliku konfiguracyjnym.
$this->config->base_url();
Ta funkcja zwraca adres URL Twojej strony, plus opcjonalną ścieżkę np. do styli lub pliku graficznego.
Te dwie powyższe funkcje, są normalnie dostępne przez analogiczne funkcje w Helperze URL.
$this->config->system_url();
Ta funkcja zwraca adres URL do folderu system.