Naučme konfigurátory procházet nastavením!

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
PJK
Člen | 70
+
0
-

Zdravíčko, mám podnětný návrh:
Při načítání konfiguračních souborů by mělo být možné rovnou se zanořit na nějakou úroveň.

Nyní se Nette chová takhle:
Konfigurační soubor:

blog.cache.enable = TRUE

… volání getConfig(‚blog‘) vrací zanořené instance Config:

Nette\Config\Config(1) ▼ {
   "cache" => Nette\Config\Config(1) ▼ {
      "enable" => "1"
   }
}

Když chci použít toto nastavení, bylo by příjemné mít možnost volat

Nette\Environment::getConfig('blog.cache.enable');

stejně jako by bylo příjemné

Nette\Environment::getConfig('blog.cache'); // instance Nette\Config\Config

třeba už jenom proto, že syntaxe

$prvni = vratPole()[1];

v PHP vážně nefunguje.

Filip Procházka
Moderator | 4668
+
0
-

a tohle jsi zkoušel?

$enable = Nette\Environment::getConfig('blog')->cache->enable;
PJK
Člen | 70
+
0
-

HosipLan napsal(a):

a tohle jsi zkoušel?

$enable = Nette\Environment::getConfig('blog')->cache->enable;

Jsem B.L.B. a zítra nosím oslí uši :D

Ale pořád bych chtěl procházet configem přímo..

hrach
Člen | 1834
+
0
-

+1, taky bych rad to oddeloval teckami.

Majkl578
Moderator | 1364
+
0
-

PJK napsal(a):

$prvni = vratPole()[1];

v PHP vážně nefunguje.

Ale od verze 5.4 bude.

westrem
Člen | 398
+
0
-

Nie som si teraz isty, ale neplanuje nieco na tento sposob prave David pomocou noveho Neon parseru? Ten sice uz k dispozicii je ale ConfigNeonAdapter este nie, mam pocit, ze v nejakom threade to spominal.

PJK
Člen | 70
+
0
-

Majkl578 napsal(a):

PJK napsal(a):

$prvni = vratPole()[1];

v PHP vážně nefunguje.

Ale od verze 5.4 bude.

Dřív než se dočkám si napíšu vlastní interpret…

PJK
Člen | 70
+
0
-

Mám rychloprasobastlofix – FUJETO!!! – úprava v Environment:

	public static function getConfig($key = NULL, $default = NULL) {
		if (func_num_args ()) {
			if (\strpos($key, '.')) {
				$res = self::$config;
				$path = \explode('.', $key);
				foreach ($path as $fragment) {
					$res = $res[$fragment];
				}
				return isset($res) ? $res : $default;
			} else {
				return isset(self::$config[$key]) ? self::$config[$key] : $default;
			}
		} else {
			return self::$config;
		}
	}

Dál bych to prozatím neřešil, vím že se plánují další adaptéry konfigurátoru, pohřebení Environment atd… Uvidíme potom

mancze
Člen | 58
+
0
-

PJK napsal(a):

Mám rychloprasobastlofix – FUJETO!!! – úprava v Environment:

Taky jsem si pro tento účel napsal podobnou metodu (nicméně ve vlastní utils třídě – tedy bez zásahu do Nette).