是否可以在cli应用程序中使用phalcon来处理带有argv参数的请求? 我想使用 argv 参数来理解应该执行的命令,例如
./script.php robot/create --color=red --feature=weapon
并以这种方式通过控制器、操作等将其放入我的应用程序中:
控制器:机器人 行动:创建 获取参数:颜色=红色,特征=武器
是否可以使用像
这样的 CLI 类Phalcon\ClI\调度程序 http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Dispatcher.html
Phalcon\CLI\Console http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Console.html
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 文件夹中..它就可以工作了。 也许这会对某人有所帮助;)
我是 Phalcon 爱好者,但实际上在我看来,任务似乎是创建 cron 作业的东西。它们与命令不同。我不认为任务是创建完整 cli 应用程序的正确方法。有很多限制。我真的建议你使用 Symfony Console:它有很好的文档记录,它管理多个参数和参数,它自动提供命令行帮助,你可以通过 Composer 安装它。 如果您要创建 cron 作业,您可以使用 Phalcon 任务,但如果您的目的是创建 cli 应用程序,请查看 Symfony Console。
phalcon 可以自动处理 argv 参数吗?
是的,PHP 会在任何框架中将命令行参数传递给
$argv
。