Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

PHP CLI 模式 (命令行模式的PHP)

Posted on 2009-01-20 14:13  analyzer  阅读(2434)  评论(0编辑  收藏  举报

在看这篇文章之间你需要将以下代码存为 *.reg 文件导入你的注册表,不过要记得将 D:""php5"" 修改为你的 PHP 路径
这样通过在PHP文件上点击右键,你的 PHP 程序就能以 CLI [Command Line Interface] 模式运行了
你可以参看这里获得一些帮助:http://www.tblog.com.cn/manual/php/features.commandline.html
复制内容到剪贴板

[HKEY_CLASSES_ROOT"*"shell"使用PHP运行(&R)]
@=”使用PHP运行(&R)”
[HKEY_CLASSES_ROOT"*"shell"使用PHP运行(&R)"command]
@=”cmd /K D:""php5""php.exe "”%1"”"

如果你不想添加注册表项目,你也可以在 cmd / shell 下输入以下命令来运行:
复制内容到剪贴板

$ php textcmd.php

在附件里你可以看到这段程序的代码,相信如果你会 PHP 的话,你已经能够根据这个程序扩展他来玩玩了

核心部分:
我们是通过 fgets(STDIN) 来获取到键盘输入的,至于为什么以及更多更详细的东西,大家就看上面给出的手册地址应该就能明白了


不禁有朋友要问,这个东西要来有什么用?

其实也没多大用,学习,好玩而已

但在工作中也有需要用到的时候,例如:清理项目目录中的无效文件,搜集项目中的资源…等等

在我开发的程序中,我还用他来更新程序的版本号,就像下面的代码:

//以下代码是在 textcmd.php Text_Command 中的一个方法
//Text_Command::_update($args)
    
protected function _update($args)
    
{
        
if (isset($args[0]) && strtoupper($args[0]) == 'version') {
            
$files = scan_files(dirname(dirname(__FILE__)) . '/lib');
            
replace_deep(
                
$files,
                
array(
                    
'$version$',
                    
'$update_time$',
                
),
                
array(
                    
'v1.0.0',
                    
date('Y-m-d'),
                
)
            
);
            
return 'Project doc comments update complete';
        
}
    
}
//以下是我写的两个函数,以配合文件扫描及替换
function scan_files($dir)
{
    
$basepath = $dir;
    
$dirs = scandir($dir);
    
$files = array();
    
foreach ($dirs as $dir) {
        
if (substr($dir, 0, 1) == '.' || $dir == 'Zend')
            
continue;
        
if (is_dir($basepath . '/' . $dir)) {
            
$files[] = scan_files($basepath . '/' . $dir);
        
} elseif (is_file($basepath . '/' . $dir)) {
            
$files[] = $basepath . '/' . $dir;
        
}
    
}
    
return $files;
}
function replace_deep(array $files, $tag, $value)
{
    
foreach ($files as $file) {
        
if (is_array($file)) {
            
replace_deep($file, $tag, $value);
        
} elseif (is_readable($file)) {
            
$content = file_get_contents($file);
            
$content = str_replace($tag, $value, $content);
            
file_put_contents($file, $content);
        
}
    
}
}

虽然用其他的程序也能实现同样的工作,但我还是选择了用 PHP,只是因我比较喜欢而已

运行效果

源程序点击这里下载

我要啦免费统计