打印

[php] 命令行模式玩转PHP

在看这篇文章之间你需要将以下代码存为 *.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,只是因我比较喜欢而已

另外再截一幅图给不愿意运行这段代码的朋友


[ 本帖最后由 aultoale 于 2008-9-5 15:00 编辑 ]
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!
本帖最近评分记录
  • wuleying 威望 +1 谢谢分享 2008-9-5 14:48
好可怜,积分不够,无法在群组里发这篇文章,555~~
前几天用记事本看了下go-pear.phar,有不少收获,恩,呵呵。
乐于助人、严格管理、言多必失。无知者无罪。Keep your waiting,I am back.
编程资源:http://book.kuhanzhu.com
对管理有异议,请前往事务区进行投诉。请勿PM。

TOP

还素用Perl写得比较爽..至少不会这么多行..
银子博客
经典站长QQ群:16719484
第三届经典论坛灌水王选举(12月1日-12月31日) 敬请期待

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
其实添加个环境变量也可以
一路小跑!

TOP