欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-10 23:45:10
...
在看这篇文章之间你需要将以下代码存为 *.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,只是因我比较喜欢而已

源程序点击这里下载