1
0
mirror of https://e.coding.net/circlecloud/MinecraftAccount.git synced 2024-11-17 00:58:55 +00:00
MinecraftAccount/ThinkPHP/Library/Vendor/Boris/Config.php
j502647092 2003fda7cb 首次提交...
Signed-off-by: j502647092 <jtb1@163.com>
2015-11-01 22:25:03 +08:00

86 lines
1.8 KiB
PHP

<?php
/* vim: set shiftwidth=2 expandtab softtabstop=2: */
namespace Boris;
/**
* Config handles loading configuration files for boris
*/
class Config {
private $_searchPaths;
private $_cascade = false;
private $_files = array();
/**
* Create a new Config instance, optionally with an array
* of paths to search for configuration files.
*
* Additionally, if the second, optional boolean argument is
* true, all existing configuration files will be loaded, and
* effectively merged.
*
* @param array $searchPaths
* @param bool $cascade
*/
public function __construct($searchPaths = null, $cascade = false) {
if (is_null($searchPaths)) {
$searchPaths = array();
if ($userHome = getenv('HOME')) {
$searchPaths[] = "{$userHome}/.borisrc";
}
$searchPaths[] = getcwd() . '/.borisrc';
}
$this->_cascade = $cascade;
$this->_searchPaths = $searchPaths;
}
/**
* Searches for configuration files in the available
* search paths, and applies them to the provided
* boris instance.
*
* Returns true if any configuration files were found.
*
* @param Boris\Boris $boris
* @return bool
*/
public function apply(Boris $boris) {
$applied = false;
foreach($this->_searchPaths as $path) {
if (is_readable($path)) {
$this->_loadInIsolation($path, $boris);
$applied = true;
$this->_files[] = $path;
if (!$this->_cascade) {
break;
}
}
}
return $applied;
}
/**
* Returns an array of files that were loaded
* for this Config
*
* @return array
*/
public function loadedFiles() {
return $this->_files;
}
// -- Private Methods
private function _loadInIsolation($path, $boris) {
require $path;
}
}