php命令行运行类中的方法
来源:互联网 发布:windows snmpwalk 编辑:程序博客网 时间:2024/06/09 21:32
以前一直听说php可以在命令行中运行,但是网上的说明都是一大堆,我今天自己测试了一下,写了一个类,可以调用任意控制器中的方法。
首先,我们要知道几个函数和几个参数:
一个函数:
php_sapi_name() 获取php脚本当前运行环境,如果在浏览器上运行,结果非常多,具体参考一下手册,但是如果是命令行运行这个脚本,结果一般就一个,‘cli’,利用这个特性,我们就可以阻止不是cli运行。因为有的脚本在浏览器中运行非常消耗资源,但是命令行就非常快,这也是为啥我们要用命令行来操作某些类的某些方法的原因。
一个参数:
$argv 命令行模式下参数数组,就是你在命令行输入的东东,都在这个数组里面。
例如:
php D:\phpStudy\WWW\mytest.com\cli2cgi.php test fsindcls
这个命令的意思就是调用php执行D:\phpStudy\WWW\mytest.com\cli2cgi.php
这个文件,同时,传递三个参数进去。
如果我们在cli2cgi.php
写上var_dump($argv),就可以看到如下结果:
看到没,获取到参数了!
那么,接下来就简单了,我们输入类和方法,然后在cli2cgi.php里面拼接文件路径和类名,方法名,然后引用一下,就可以实现在命令行中调用类中的某些方法了!原理就是这么简单。下面上代码:
cli2cgi.php
<?php// 获取参数,第一为控制器,第二个为方法,第0个为调用的文件路径// var_dump($argv);// exit;$c = $argv[1];$a = $argv[2];//拼出类文件路径, 如果a为index crontab_path = index.controller.php$crontab_path = 'controller/' . $c . '.controller.php';//引入该文件require $crontab_path;//实例化类$controller = new $c;//调用该方法$controller->$a();
test.controller.php
<?phpclass test { public function index() { echo 'test cgi'; } public function find() { if (php_sapi_name() !== 'cli') { die('nedd cli environment !'); }; echo 'find function' . PHP_EOL; echo date('Y-m-d H:i:s', time()); }}
运行命令:
php D:\phpStudy\WWW\mytest.com\cli2cgi.php test find
注意:我在这里把php加入全局环境变量了,所以可以直接调用php。
如是,就出现如下结果:
一般框架里面都有这个功能,如果没有的话,就自己这样写一个吧,也很简单!
0 0
- php命令行运行类中的方法
- php 命令行下运行php脚本传递参数方法
- php 命令行中运行
- 命令行下运行php的方法和技巧
- 命令行下运行php的方法和技巧
- 在命令行下运行PHP脚本[带参数]的方法
- linux命令行下运行php的方法和配置
- [PHP]php cli命令行下运行php的三种方法(带参数)
- 命令行方式运行PHP脚本
- 命令行方式运行PHP脚本
- 命令行方式运行php脚本
- 命令行下运行php脚本
- php cli 命令行中的php
- 在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法
- 在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法
- 在命令行下运行PHP脚本
- windows命令行下运行PHP程序
- php 运行时读取命令行输入命令
- sphinx 分布式搜索出现warning:send() failed : 32: broken pipe,
- 【Android 基础】利用Theme自定义Activity间的切换动画
- PES,TS,PS,RTP等流的打包格式解析之TS流
- lua截取中英文混合字符串
- KVO模式具体运用细节
- php命令行运行类中的方法
- UVA, 374 Big Mod
- Android Handler造成的内存泄漏的分析j
- 1018. Public Bike Management (30)
- Python3网络爬虫(三):Python3使用Cookie-模拟登陆获取妹子联系方式
- python 基本数据类型梳理
- Netty从没听过到入门 -- 服务器端详解
- SQL质疑ch处理
- mysql 对插入重复记录的三种方法,ignore,replace,on duplicate key update