Exemple #1
0
 /**
  * Init by laravel Config
  * @param $config see demo.ini file
  */
 public function __construct($config)
 {
     self::setConfig($config);
     $scheme = new \XSFieldScheme();
     foreach ($this->_config as $key => $value) {
         if (is_array($value)) {
             $scheme->addField($key, $value);
         }
     }
     $scheme->checkValid(true);
     $this->_scheme = $this->_bindScheme = $scheme;
     $this->setScheme($scheme);
 }
Exemple #2
0
 private function loadIniFile($file)
 {
     $cache = false;
     $cache_write = '';
     if (strlen($file) < 255 && file_exists($file)) {
         $cache_key = md5(__CLASS__ . '::ini::' . realpath($file));
         if (function_exists('apc_fetch')) {
             $cache = apc_fetch($cache_key);
             $cache_write = 'apc_store';
         } elseif (function_exists('xcache_get') && php_sapi_name() !== 'cli') {
             $cache = xcache_get($cache_key);
             $cache_write = 'xcache_set';
         } elseif (function_exists('eaccelerator_get')) {
             $cache = eaccelerator_get($cache_key);
             $cache_write = 'eaccelerator_put';
         }
         if ($cache && isset($cache['mtime']) && isset($cache['scheme']) && filemtime($file) <= $cache['mtime']) {
             $this->_scheme = $this->_bindScheme = unserialize($cache['scheme']);
             $this->_config = $cache['config'];
             return;
         }
         $data = file_get_contents($file);
     } else {
         $data = $file;
         $file = substr(md5($file), 8, 8) . '.ini';
     }
     $this->_config = $this->parseIniData($data);
     if ($this->_config === false) {
         throw new XSException('Failed to parse project config file/string: \'' . substr($file, 0, 10) . '...\'');
     }
     $scheme = new XSFieldScheme();
     foreach ($this->_config as $key => $value) {
         if (is_array($value)) {
             $scheme->addField($key, $value);
         }
     }
     $scheme->checkValid(true);
     if (!isset($this->_config['project.name'])) {
         $this->_config['project.name'] = basename($file, '.ini');
     }
     $this->_scheme = $this->_bindScheme = $scheme;
     if ($cache_write != '') {
         $cache['mtime'] = filemtime($file);
         $cache['scheme'] = serialize($this->_scheme);
         $cache['config'] = $this->_config;
         call_user_func($cache_write, $cache_key, $cache);
     }
 }
 public function testCheckValid()
 {
     $this->assertTrue($this->object->checkValid());
     $object = new XSFieldScheme();
     $this->assertFalse($object->checkValid());
 }