首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

小谈windows下右键菜单实现PHP文件的快捷预览(08-1-18更新)

鼓鼓勇气,还是发上这篇文章!(继续欢迎大家拿斧头修正。)
这不是一篇惊天动地的旷世文章,如果你想从中得到什么,那或许你可以让本文变的更完美。尽管如此,还是本人原创的,写出来和大家分享,希望能探讨出更优秀的解决方案。

非常感谢你能光临我的博客!并且希望本博客没有给你带来太多的恶心(如果有一点点,那就算了uplook)!改善自己的生存环境一直是人类不断追求的目标,我的目的极为单纯(就像某位N人说的,牛奶我只喝纯牛奶,水只喝纯净水,所以我很单纯!),就是为了改善开发环境,让自己在写PHP的时候更得心应手一些,再得心应手一些~

最终的功能描述:
       当在你的本地服务器目录中任意右击一个文件,选择【在APACHE中预览】时,我们将打开一个浏览器窗口,以本地地址(localhost)预览该文件,这个功能对HTML的静态页面作用有限,但对于PHP类的文件,那就显得很有意义,这让你改变了传统的输入地址方式来预览(当然,IDE不在此列。)
请看截图演示:


我的APM环境装在D盘,apache的DocumentRoot指向D:\myserver\wwwroot,listen 8080,PHP的路径是D:\myserver\PHP5,现在,先建立一个批处理文件:
复制内容到剪贴板
代码:
@echo off
echo ^<?php>D:\myserver\wwwroot\test.php
echo $fil='%1';>>D:\myserver\wwwroot\test.php
echo $fil=str_replace(array('D:\\myserver\\wwwroot','\\'),array('http://localhost:8080','/'),$fil);>>D:\myserver\wwwroot\test.php
echo echo 'start /min '.$fil."\n";>>D:\myserver\wwwroot\test.php
echo echo 'del /q D:\myserver\wwwroot\test.php'."\n";>>D:\myserver\wwwroot\test.php
echo echo 'exit';>>D:\myserver\wwwroot\test.php
echo ?^>>>D:\myserver\wwwroot\test.php
D:\myserver\PHP5\php.exe -n -f D:\myserver\wwwroot\test.php >%tmp%\tmp.bat
start /min %tmp%\tmp.bat
exit
这个算是我们要用到的主文件了,批处理编的很烂,见笑!其功能是建立一个D:\myserver\wwwroot\test.php,让PHP以命令模式去执行test,把这个主文件放到D:\myserver\PHP5\Xphp.bat,以便调用。

下面就是修改注册表,为我们的右键菜单加一项【在apache中预览】,运行regedit,定位大HCR/*/shell(选择*就可以让所有文件右键都有了此菜单项),在其下新建项RunPHP,默认那里填上在APACHE中预览,再在RunPHP下新建项command,默认值设为:"D:\myserver\PHP5\xphp.bat" %1,这样右键菜单就完成了,附上我的注册表导出项:
复制内容到剪贴板
代码:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\RunPHP]
@="在APACHE中预览"

[HKEY_CLASSES_ROOT\*\shell\RunPHP\command]
@="\"D:\\myserver\\PHP5\\xphp.bat\" %1"
现在,还等什么呢?当然就像图中那样在我们的网站目录中右击选择一个PHP文件来预览,方便快捷。

值得提醒的几点是:

1、这个右击菜单是针对所有的文件,这是我试图兼容HTML,带来的不便是可能存在未知的安全隐患,建议不要在EXE类的文件上选择在apache中预览。当然你可以将文中提到的*改为.php。
2、如果你的路径中包含单引号('),或者空格,那么这个脚本是不能正确的执行的!
3、文中的某些文件名以及注册表项名不是绝对的,你可以任意的改名。
4、这篇文章是本人的一个想法,也从实践中给我的工作带来了方便,如果你要转载,那是我的荣幸。尽管写的超烂,还是希望能保留出处,本文系Zendstudio.net原创文字,谢谢您这么有耐心的看完。

-----gently



===========================================================================================================
update:(2008-1-18 12:49:16)
感谢大家的支持,其实后面这些内容也写的蛮久了,只是一直觉得大家都没有兴趣,就没有放上来,现在,我看还是分享下,别说偶自私!~


前面写的那篇文章,一直都让本人诚惶诚恐,怕被人唾沫给淹死!!因为实在看不下去,包括我自己,而且就我自己测试而言,处理速度相当之慢,那天看书,无意中就了解了一下PHP的CLI模式,曾经记得在使用某国外的开源源码的时候,安装需要我指定php.exe的具体路径,当时也没多想,现在看来,他是在使用CLI模式来进行系统的安装的~,看了很久,总算知道了个大概。于是就改写了我的代码了――其实之前的问题一直是参数的传递!
(注册表的修改还是参考前面的那篇文章中的方案。)

bat文件的内容:
复制内容到剪贴板
代码:
@echo off
php D:\myserver\PHP5\getURL.php %1 >%tmp%\tmp.bat
call %tmp%\tmp.bat
exit
PHP文件的内容:注意,文件名的对应的哦~
复制PHP内容到剪贴板
PHP代码:
#!d:\myserver\php5\php.exe -q
<?php
$phPath
=$_SERVER['argv'][1];
$url=str_replace(array('\\','D:/myserver/wwwroot'),array('/','http://localhost:8080'),$phPath);
echo 
'start /min '.$url."\n";
echo 
"exit\n";
?>
是的,核心代码变的只有了这么一点点了,而且相当清晰,执行的效率较之前有显著提高(自吹中...)
      也许所有的部分就是这个$_SERVER['argv'],我想称呼他为CLI模式的精华一点不为过,有了这个,参数传递变的非常简单,PHP有了CLI模式,就离我们的生活更进了一步,我们可以做到的东西就更多了,比如清理系统垃圾、文件批量重命名、刷个锅、洗个碗什么的,这些实用功能就等着开发了,OK,又一篇软文,骗大家读到这里!好了,藏在身后的砖头都可以拿出来了

[ 本帖最后由 gently 于 2008-1-18 12:51 编辑 ]
昵称: gently  时间: 2007-12-04 13:07:00
  很好!!!很强大!!!
昵称: imagic  时间: 2007-12-05 00:11:00
收藏先
昵称: spjhf  时间: 2007-12-06 12:34:00
太厉害了,收藏了!!支持你,顶你!
昵称: xuer  时间: 2007-12-06 15:56:00
有点迷糊,有时间还要继续学习啊
昵称: tc318  时间: 2007-12-06 20:42:00
不过收益很大,谢谢啊
昵称: tc318  时间: 2007-12-06 20:42:00
我顶!!
昵称: sundyandy  时间: 2008-01-18 11:22:00
   这么久,终于有人顶了!
我给更新下!!
昵称: gently  时间: 2008-01-18 12:46:00
昵称: MoHock  时间: 2008-01-18 14:21:00