Beispiel #1
0
 public static function &get($name = null)
 {
     if (!$name) {
         return Config::getAll();
     }
     Once::exec(__FILE__ . '::get' . $name, function () use($name) {
         Config::init();
         Config::load($name . '/.infra.json', $name);
         foreach (Path::$conf['search'] as $dir) {
             Config::load($dir . $name . '/.infra.json', $name);
         }
         if (!isset(Config::$conf[$name])) {
             $r = array();
             return $r;
         }
     });
     return Config::$conf[$name];
 }
Beispiel #2
0
 public static function checkFS()
 {
     $search = Cache::exec(array('composer.lock'), __FILE__ . 'init', function () {
         $search = array();
         $ex = array_merge(array(Path::$conf['cache'], Path::$conf['data']), Path::$conf['search']);
         Search::scan('', function ($src, $level) use(&$search, $ex) {
             if (in_array($src, $ex)) {
                 return true;
             }
             //вглубь не идём
             if ($level < 2) {
                 return;
             }
             if ($level > 5) {
                 return true;
             }
             if (!is_file($src . '.infra.json')) {
                 return;
             }
             $r = explode('/', $src);
             array_pop($r);
             array_pop($r);
             $search[] = implode('/', $r) . '/';
             return false;
             //вглубь не идём и в соседние папки тоже
         });
         return $search;
     });
     Path::$conf['search'] = array_values(array_unique(array_merge(Path::$conf['search'], $search)));
     if (Config::$all) {
         //Если все конфиги были уже обраны, нужно заного пробежаться по найденным
         for ($i = 0; $i < sizeof($search); $i++) {
             $tsrc = $search[$i];
             if (!is_dir($tsrc)) {
                 continue;
             }
             $files = scandir($tsrc);
             foreach ($files as $file) {
                 if ($file[0] == '.') {
                     continue;
                 }
                 if (!is_dir($tsrc . $file)) {
                     continue;
                 }
                 Config::load($tsrc . $file . '/.infra.json', $file);
             }
         }
     }
     /*$comp = Load::loadJSON('composer.json');
     		if ($comp && !empty($comp['require'])) {	
     			foreach ($comp['require'] as $n => $v) {
     				$r = explode('/', $n);
     				
     				if (sizeof($r) != 2) continue;
     				$path = 'vendor/'.$r[0].'/';
     				if (!in_array($path, Path::$conf['search'])){
     					Path::$conf['search'][] = $path;
     				}
     			}
     		}*/
 }