Kod
$handle=fopen ($configfile, "r");
while (!feof ($handle)) {
$line = fgets ($handle);
if (preg_match ('/\s*\$(.*)\s+=\s+(.*)/', $line)) {
$to_eval = preg_replace ('/\$/', '$this->', $line);
eval ($to_eval);
}
}
fclose ($handle);
Niestety za ciekawie to nie wygląda, zarówno eval jak i parsowanie każdej linijki dwoma wyrażeniami.. Mój system konfiguracji wygląda znacznie prościej, jest znacznie szybszy, a użycie jest łatwiejsze, nie wspominając o możliwościach (odnoszenie się wewnątrz konfiguracji, do innej konfiguracji). Tyle że do tego potrzebne jest kilka rzeczy, osobiście używam yamla, bardzo mi się spodobał za pierwszym razem jak tylko go zobaczyłem i od tamtego czasu niczego więcej nie wyobrażam sobie używać do zapisywania konfiguracji

jak się używa yamla, dobrze było by zapisywać wyniki parsowania, żeby niepotrzebnie nie parsować każdorazowo, tak więc dodatkowo potrzebne jest cache. Jak potrzebna jest tylko konfiguracja, to używanie kilku klas może wydawać się przesadą, tyle że w przypadku większej całości, to pozostałe klasy są przeważnie wykorzystywane gdzie indziej jeszcze, więc to nie ma znaczenia. A konfiguracji u siebie używam tak:
Kod
<?php
Config::get('framework.default_database');
Config::get('framework.cache.driver');
A plik konfiguracji powiedzmy mniej więcej wygląda tak:
Kod
framework:
default_locale: [pl_PL, pl, polish]
default_timezon: Europe/Warsaw
default_language: pl_PL
default_database: %database.common%
cache:
driver: file
lifetime: 3600
enabled: true
database:
common:
driver: sqlite
dbname: %path.apps%/data/common.db
Czytelnie w zapisie, łatwe w użyciu