Phalcon下命令行应用(command line applications)

摘要:
今天,我计划在Phalcon项目下添加一个预定任务来发送邮件。看了官网上的例子,配置和操作有点乱,有bug。请参见注释。我将主要解释如何分离命令行的配置。如果您是网站新手,建议您先在官网上运行第一个示例,然后在官网上练习第二个示例。如果有错误,请查看我的评论,然后查看如何独立处理配置。

今天打算在phalcon项目下加入一个定时任务,来发送邮件。

看了官网的例子,配置和运行都少许杂乱,还有个bug,见备注, 我这边主要讲解如何将command line 的配置独立出来,如果初上手的同学,建议先运行官网第一个例子,成功后,再实践一下官网第二个例子,出现报错,就看我备注,然后再看我这如何将配置独立处理。

借鉴思想:主要借鉴Yii框架中,类似功能commands的配置console.php。

第一步:在app下的tasks文件夹下建三个文件:

cl_config.php    //直接把app/config/config.php内容copy进去

cl_loader.php   //同样把app/config/loader.php内容copy进去,注意要有所取舍,比如modelsDir,用数据库时用,但controllersDir就没啥用,可以注释掉

cl_services.php //也同样copy进去,但$di不需要重新生成,直接用好了,把没用的都注释掉,一般只保留$di->set('db'.... 那段

第二步:修改app下的cli.php文件

if(is_readable(APPLICATION_PATH . '/tasks/cl_config.php')) {      //导入cl_config.php
$config = include APPLICATION_PATH . '/tasks/cl_config.php';
$di->set('config', $config);
}
include APPLICATION_PATH. "/tasks/cl_loader.php";         //现在引入autoloader,
include APPLICATION_PATH. "/tasks/cl_services.php";      //引入cl_services

ok啦,,,,

备注:

cli.php里的一部分配置

$arguments = array();
foreach($argv as $k => $arg) {
if($k == 1) {
$arguments['task'] = $arg;
} elseif($k == 2) {
$arguments['action'] = $arg;
} elseif($k >= 3) {
$arguments[] = $arg;  //需改成$arguments['params'][] = $arg;否则,在命令行带上参数运行时,会报错,如下
}
}

运行:$ php app/cli.php main test ff ss ww mm

报错内容:

PHP Catchable fatal error:  Argument 1 passed to MainTask::testAction() must be of the type array, string given in /Users/liangzhongyuan/Sites/library/app/tasks/MainTask.php on line 24

 Catchable fatal error: Argument 1 passed to MainTask::testAction() must be of the type array, string given in /Users/liangzhongyuan/Sites/library/app/tasks/MainTask.php on line 24

 

相关连接:

http://www.myleftstudio.com/reference/cli.html //官网讲解

免责声明:文章转载自《Phalcon下命令行应用(command line applications)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Cadence 电源完整性仿真实践(一)Android Activity的切换动画(overridePendingTransition)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

百度专家谈智能硬件测试探索

2013年-2018年,物联网整体规模呈现加速扩张趋势,智能设备数量直线增长。如下图: 2013年-2020年全球智能设备数量(亿台) 01 — 那什么是智能设备呢? 简单的说就是将硬件和app连接,通过软硬结合的方式,让传统设备附加到互联网,让其拥有智能化,并且通过移动软件app连接智能硬件,来实现对硬件的远程控制,例如共享单车、智能音箱、智能插座等几...

java 添加properties文件读写

import java.io.InputStream; import java.util.Properties; /** * @author guoxiang * */ public class Config { private static Config instance = null; private Propert...

Software_programming_Config_HOCON

05:09:37 HOCON githubhttps://github.com/lightbend/config/blob/master/HOCON.md 相较于 XML, JSON, YAML 更强大和更人性化的配置文件格式。HOCON idea 可以从下载 HOCON 插件, 文件格式以 .conf 为后缀。如遇到IDEA 卡住,则重启 IDEA. &...

一起谈.NET技术,ASP.NET MVC3 基础教程 – Web Pages 1.0 狼人:

  I:Web Pages 1.0中以“_”开头的特别文件(文件命名时不区分大小写)   “_appstart.cshtml” & “_pagestart.cshtml” & “_viewstart.cshtml”   _appstart.cshtml - 应用程序启动时在Global. Application_Start方法后执行。  ...

xamarin.forms uwp app部署到手机移动设备进行测试,真机调试(device portal方式部署)

最近学习xamarin。刚好手上有一个lumia 930.所以试一试把uwp app部署到手机上,并真机调试一把。 目前环境: 1.开发pc电脑是win10,版本1607.加入了insider,所以版本比较高。 2.手机是 lumia 930.版本 1511,手机未加入insider,所以是稳定版本,比较低。(device-portal方式部署要求系统版...

React项目的一些配置以及插件

创建项目 1、安装cra npm install -g create-react-app 2、创建项目   “react-lesson”  为文件名 create-react-app react-lesson 3、启动项目 npm start   使用第三方组件 1、antd: npm install antd --save 使用: import Butt...