CLI模式使用说明

DoitPHP的CLI模式是指DoitPHP在命令行下运行。由于在命令行下,即不支持$_POST,也不支持$_GET等,所以注定了CLI模式下运行DoitPHP框架编写的程序有所不同。

首先、入口文件内容不一样。非CLI模式运行下的入口文件(默认index.php)的代码内容为:

  1. define('IN_DOIT', true);
  2.  
  3. /**
  4. * 定义项目所在路径(根目录):APP_ROOT
  5. */
  6. define('APP_ROOT', dirname(__FILE__));
  7.  
  8. /**
  9. * 加载DoitPHP框架的初始化文件,如果必要可以修改文件路径
  10. */
  11. require_once APP_ROOT . '/doitphp/DoitPHP.php';
  12.  
  13. $config = APP_ROOT . '/application/config/application.php';
  14.  
  15. /**
  16. * 启动应用程序(网站)进程
  17. */
  18. Doit::run($config);

而CLI模式下的入口文件,内容为:

  1. define('IN_DOIT', true);
  2.  
  3. /**
  4. * 定义项目所在路径(根目录):APP_ROOT
  5. */
  6. define('APP_ROOT', dirname(__FILE__));
  7.  
  8. /**
  9. * 加载DoitPHP框架的初始化文件,如果必要可以修改文件路径
  10. */
  11. require_once APP_ROOT . '/doitphp/DoitPHP.php';
  12.  
  13. $config = APP_ROOT . '/application/config/application.php';
  14.  
  15. /**
  16. * 启动应用程序(CLI)进程
  17. */
  18. Doit::execute($config);

由上面两个文件的代码可以看出,在非CLI模式运行下的入口文件,启动应用时的代码是:Doit::run($config); 而CLI模式下启动应用时的代码是:Doit::execute($config);

其次,获取参数时的类方法不同。在非CLI模式运行下的文件在获取请求参数时,使用$this->post(), $this->get(),或$this->getParams(),而在CLI模式下,获取参数时,仅$this->getCliParams()可以使用。

再次,访问网址不同(这是有用的废话,哈~),在非CLI模式运行下的文件访问网址为:http://yourdomains/index.php,而在CLI模式下入口文件调用则是:php -f 入口文件路径 controllername actionname。如:

  1. /usr/local/php5/bin/php /www/htdocs/demo/cli.php controllername actionname
模式: php -f 项目入口文件(cli.php)路径 Controller名称 Action名称 —参数1=参数1值 —参数2=参数2值

除上面几处不同之外,在Controller文件,Model文件开发大都相同。在CLI模式下,视图功能比较要求就相对比较简单。大多CLI模式下运行的程序都是网站后台数据处理。一般情况下用在crontab里调用,或者deamon里调用。

举例说明

例一、

  1. public function indexAction() {
  2.  
  3. $name = $this->getCliParams('name');
  4.  
  5. echo 'The name is:', $name;
  6. }

使用 php -f 项目入口文件路径 Controller名称 Action名称 —name=doitphp 这个命令访问时,看下上面的程序执行是否正常。

原文: http://www.doitphp.com/index/documentation/?articleid=62