🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
官方文档地址:http://yaf.laruence.com/manual/yaf.incli.times.html 感觉文档写得有点简单,不好理解,这里聊下我是怎么用的yaf命令行。 ### 简述 在yaf中用到命令行大多是为了跑Crontab,首先,为了更好的与web区分(配置文件,argc、argv判断等等).重新创建一个入口文件是比较好的做法。 ### 方法一 在项目根目录下面新建一个cli.php文件: `<?php define("APP_PATH", realpath(dirname(__FILE__))); $app = new Yaf_Application(APP_PATH . "/conf/application.ini"); $app->getDispatcher()->dispatch(new Yaf_Request_Simple());` 这样入口文件就完成了。 然后再新建一个接收命令和操作的控制器Crontab.php: `<?php class CrontabController extends Yaf_Controller_Abstract { public function init() { Yaf_Dispatcher::getInstance()->disableView(); } public function indexAction($username = '') { //to do a crontab echo 'we get the name is : '.$username; } } ?>` 接下来,我们在命令行中调用。在命令行中切换到你的项目目录,就是cli.php所在目录,然后输入如下命令: > php cli.php request_uri="/crontab/index" OK,是不是在命令行看到了输出的字符串。 request_uri=”/crontab/index” 中的路径便是Controller的路由路径. 在例子里指向/controllers/Crontab.php 中的 indexAction(). ### 方法二 还有一种方法,通过Yaf_Application::execute(..)去实现。 先看一下这个函数的定义: > public void Yaf_Application::execute ( callable $entry , string $... ) This method is typically used to run Yaf_Application in a crontab work. Make the crontab work can also use the autoloader and Bootstrap mechanism. 第一参数需要定义一个回调函数,也可以是一个类中的某个函数。 示例:$application->execute(“main”, $argc, $argv); 或 $application->execute(array(“Class”,”Method”), $argc, $argv); 后面的参数为一个可变列表,值为你希望传入的参数。 如些,我们将刚才新建的cli.php文件改写成: `<?php define("APP_PATH", realpath(dirname(__FILE__))); $app = new Yaf_Application(APP_PATH . "/conf/application.ini"); $app->bootstrap()->execute(array('CrontabController','indexAction'),'wulei');` 其中如果你需要用bootstrap的初始化的,可以保留,如果不需要的话,也可以把bootstrap去掉。