最近利用空余时间把之前的一个小工具重构了下,主要是使用引入了Symfony/Console,优化了指令的交互,后期的功能扩展也方便很多。另外就是用Symfony/Yaml来管理配置文件,对配置文件的操作也好了很多。原文地址
使用Symfony/Console重构指令
phpcc的主要指令由install、remove、config。之前是用php直接写的,根据$argv获取指令的参数,然后使用switch结构去分别执行。
if (count($argv) < 2) {
print<<<...
exit(1);
}
switch ($argv[1]) {
case 'install':
...
case 'remove':
...
case 'config':
...
default:
...
}
现在引入了Console框架,创建统一的指令入口Application,在Application中集成指令,最后运行对应指令:
$application = new Application();
$application->add(new ConfigCommand());
...
$application->run();
使用这种方式,极大方便了以后扩展指令,以及每个指令的维护升级工作。
使用Symfony/Yaml
之前的配置是通过正则匹配来完成读取和写入的。
function get_ini_file()
{
$file_name = './vendor/zhenggui/php-cc/phpcc.ini';
$str = file_get_contents($file_name);
$ini_list = explode("\n", $str);
$ini_items = array();
foreach ($ini_list as $item) {
$one_item = explode("=", $item);
if (isset($one_item[0]) && isset($one_item[1])) {
$ini_items[trim($one_item[0])] = trim($one_item[1]);
}
}
return $ini_items;
}
使用Yaml来管理配置,要方便很多:
$config_content = Yaml::parseFile($config_file_path);
添加了开发/生产环境的支持
为了方便开发测试,增加了开发环境的支持,只需要在项目中添加.dev.lock
文件,运行命令就会判断为开发环境,并完成一些初始化操作。
好了,这个小重构差不多就这么多内容,后面希望慢慢再加一些功能。