php - Phalcon 和 cli 应用程序

标签 php command-line-interface phalcon

是否可以在 cli 应用程序中使用 phalcon 来处理带有 argv 参数的请求? 我想使用 argv 参数来理解应该执行的命令,例如 ./script.php robot/create --color=red --feature=weapon

并以这种方式通过 Controller 、操作等将其放入我的应用程序中:

Controller :机器人 行动:创造 获取参数:color=red,feature=weapon

是否可以使用像

这样的 CLI 类
  1. Phalcon\ClI\Dispatcher http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Dispatcher.html

  2. Phalcon\CLI\Console http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Console.html

  3. Phalcon\CLI\Task http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Task.html

和其他类似的?

没有文档和操作手册...也许有人有经验或只是一个想法。 我知道我们必须定义 DI 并初始化应用程序,但我不知道如何以更原生的方式实现这一点。

另外还有一个问题:phalcon可以自动处理argv参数吗?

据我了解,我们应该将 Phalcon\CLI\Console 对象作为应用程序启动并传递给它 DI。但是整个过程/场景......我就是无法理解:)

最佳答案

所以,我有以下文件夹结构:

~/www
~/www/app
~/www/app/models
~/www/app/controllers - controllers for web
~/www/app/tasks - task for cli
~/www/public/app.php - web application
~/www/cli/app.php - console application

在 cli/app.php 中我有以下代码:

#!/usr/bin/php
<?php

/**
 * This makes our life easier when dealing with paths. 
 * Everything is relative to the application root now.
 */ 
chdir(dirname(__DIR__));

/**
 * Init loader
 */
$loader = new \Phalcon\Loader();
$loader->registerDirs(['app/tasks/'])
       ->register(); 

/**
 * Setup dependency injection      
 */       
$di = new Phalcon\DI();

// Router
$di->setShared('router', function() {
    return new Phalcon\CLI\Router();
});

// Dispatcher
$di->setShared('dispatcher', function() {
    return new Phalcon\CLI\Dispatcher();
});

/**
 * Run application
 */
$app = new Phalcon\CLI\Console();
$app->setDI($di);
$app->handle($argv);

然后我将我的任务类放在 app/tasks 文件夹中......它就可以工作了。 也许这会对某人有所帮助;)

关于php - Phalcon 和 cli 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14807676/

相关文章:

php - 如何将 Cassandra 与 PHP 连接起来

php - 如何比较逗号分隔值和两个不同的ids-php mysql

linux - 如何编写全屏 Linux 控制台应用程序/脚本?

javascript - Phalcon Ajax 响应返回 HTML

php - PhalconPHP 如何通过连接数据来条件 findFirst

PHPStorm 禁用匿名函数括号前的空格

php - 使用mysql和php在表之间传输数据

audio - 如何使用 ffmpeg 将单个 showwaves(或 showfreqs)叠加层与两个对称滚动的 showspectrum 叠加层集中定位?

php - php 的 crontab 开始了,但有时并没有结束

php - 如何让 Phalcon 将 Action 委托(delegate)给其他 Controller ?