php命令行运行类中的方法

以前一直听说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

<?php
class 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。

如是,就出现如下结果:

这里写图片描述

一般框架里面都有这个功能,如果没有的话,就自己这样写一个吧,也很简单!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SHUIPING_YANG

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值