public function composite_properties() { $config = new Config(); $config->append('util/cmd/unittest/add_etc'); $config->append('util/cmd/unittest'); $this->assertEquals('overwritten_value', $config->properties('debug')->readString('section', 'key')); }
/** * Main method * * @param util.cmd.ParamString params * @return int */ public function run(ParamString $params, Config $config = null) { // No arguments given - show our own usage if ($params->count < 1) { $this->selfUsage(); return 1; } // Configure properties $config || ($config = new Config()); // Separate runner options from class options for ($offset = 0, $i = 0; $i < $params->count; $i++) { switch ($params->list[$i]) { case '-c': $config->append($params->list[$i + 1]); $offset += 2; $i++; break; case '-cp': ClassLoader::registerPath($params->list[$i + 1], null); $offset += 2; $i++; break; case '-v': $this->verbose = true; $offset += 1; $i++; break; case '-?': $this->selfUsage(); return 1; case '-l': $this->listCommands(); return 1; default: break 2; } } // Sanity check if (!$params->exists($offset)) { self::$err->writeLine('*** Missing classname'); return 1; } // Use default path for config if no sources set if ($config->isEmpty()) { $config->append(is_dir(self::DEFAULT_CONFIG_PATH) ? self::DEFAULT_CONFIG_PATH : '.'); } unset($params->list[-1]); $classparams = new ParamString(array_slice($params->list, $offset + 1)); return $this->runCommand($params->value($offset), $classparams, $config); }