Skip to content

Commit 2737e1a

Browse files
author
Giovanni Lovato
committed
Preliminary support to multiple configuration sources
1 parent 779ffba commit 2737e1a

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

src/Bread/Configuration/Manager.php

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,29 @@ class Manager
2626

2727
public static function initialize($url)
2828
{
29-
$directory = parse_url($url, PHP_URL_PATH);
30-
return Cache::instance()->fetch(__METHOD__)->then(null, function ($key) use ($directory) {
31-
$configurations = array();
32-
if (!is_dir($directory)) {
33-
throw new Exception("Configuration directory $directory is not valid.");
34-
}
35-
foreach ((array) scandir($directory) as $path) {
36-
$extension = pathinfo($path, PATHINFO_EXTENSION);
37-
$path = $directory . DIRECTORY_SEPARATOR . $path;
38-
if ($Parser = static::get(__CLASS__, "parsers.$extension")) {
39-
$configurations = array_replace_recursive($configurations, $Parser::parse($path));
40-
}
41-
}
42-
Cache::instance()->store($key, $configurations);
43-
return $configurations;
44-
})->then(function ($configurations) {
45-
static::$configurations = array_merge($configurations, static::$configurations);
46-
});
29+
switch (parse_url($url, PHP_URL_SCHEME)) {
30+
case 'file':
31+
$directory = parse_url($url, PHP_URL_PATH);
32+
return Cache::instance()->fetch(__METHOD__)->then(null, function ($key) use ($directory) {
33+
$configurations = array();
34+
if (!is_dir($directory)) {
35+
throw new Exception("Configuration directory $directory is not valid.");
36+
}
37+
foreach ((array) scandir($directory) as $path) {
38+
$extension = pathinfo($path, PATHINFO_EXTENSION);
39+
$path = $directory . DIRECTORY_SEPARATOR . $path;
40+
if ($Parser = static::get(__CLASS__, "parsers.$extension")) {
41+
$configurations = array_replace_recursive($configurations, $Parser::parse($path));
42+
}
43+
}
44+
return Cache::instance()->store($key, $configurations);
45+
})->then(function ($configurations) {
46+
return static::$configurations = array_merge($configurations, static::$configurations);
47+
});
48+
case 'mysql':
49+
default:
50+
throw new Exception('Configuration scheme currently not supported');
51+
}
4752
}
4853

4954
public static function defaults($class, $configuration = array())

0 commit comments

Comments
 (0)