gpt4 book ai didi

php - Phalcon CLI 任务名称

转载 作者:可可西里 更新时间:2023-10-31 22:51:21 25 4
gpt4 key购买 nike

我有 MainTask.php 和 SomeOtherTask.php 文件的文件夹任务...

我怎样才能只运行 SomeOtherTask?

运行主任务我只需要写

php cli.php

,但我想要一些严肃的文件名而不是 MainTask...

这是我的另一个任务:

<?php
use Phalcon\Cli\Task;

class DeleteExpiredAuthTokens extends Task{

public function mainAction()
{
echo "Hello world war Z";
}
}

最佳答案

目录设置

您需要在app/中创建一个tasks/目录,然后您可以取适当的文件名;例如;

app/
├── tasks/
│ ├── SomeTask.php
│ ├── SomeOtherTask.php

├── cli.php

现在,您需要创建一个 cli.php 文件,您的命令行将调用该文件。在这里,您需要查看调用参数并将其传递到您的 $console->handle() 方法中。例如;

cli.php

<?php

use Phalcon\Di\FactoryDefault\Cli as CliDI;
use Phalcon\Cli\Console as ConsoleApp;
use Phalcon\Loader;


// Using the CLI factory default services container
$di = new CliDI();

$arrBasePath = preg_split("/\//", __DIR__);
$limit = sizeof($arrBasePath);

$strBasePath = "";
for ($count = 0; $count < $limit - 1; $count++) {
$strBasePath .= $arrBasePath[$count] . '/';
}

define('BASE_PATH', $strBasePath);

/**
* Register the autoloader and tell it to register the tasks directory
*/
$loader = new Loader();

$loader->registerDirs(
[
__DIR__ . "/tasks",
__DIR__ . "/models",
__DIR__ . "/controllers"
]
);

$loader->register();

// Create a console application
$console = new ConsoleApp();
$console->setDI($di);

//Process the console arguments
$arguments = [];
foreach ($argv as $k => $arg) {
if ($k == 1) {
$arguments["task"] = $arg;
} elseif ($k == 2) {
$arguments["action"] = $arg;
} elseif ($k >= 3) {
$arguments["params"][] = $arg;
}
}

try {
// Handle incoming arguments
$console->handle($arguments);
} catch (\Phalcon\Exception $e) {
echo $e->getMessage();
exit(255);
}

现在,在 app/tasks/SomeTask.php 中说你有以下内容;

app/tasks/SomeTask.php

use Phalcon\Cli\Task;

class SomeTask extends Task
{

public function MainAction()
{
echo "This is the main action\r\n";
}

public function OtherAction()
{
echo "This is other action\r\n";
}

}

例如,您可以通过在参数中传递它们来调用您的任务;

$ php cli.php some
This is the main action

或者,通过传递它来调用另一个方法;

$ php cli.php some other
This is other action

注意事项

  • 您的类名需要以 Task 结尾。调用此类时,您可以省略它。看看我是如何调用 someTask 类的。
  • 在您的示例中,将 DeleteExpiredAuthTokens 重命名为 DeleteExpiredAuthTokensTask 否则您将收到以下错误消息:无法加载 DeleteExpiredAuthTokensTask 处理程序类

关于php - Phalcon CLI 任务名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41874177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com