gpt4 book ai didi

php - Yii2 - 从另一个控制台命令中调用 Yii 控制台命令?

转载 作者:可可西里 更新时间:2023-11-01 12:50:34 26 4
gpt4 key购买 nike

我创建了两个不同的 Yii2 控制台命令/ Controller 。

调用它们的例子是

# yii user/create-account

# yii webserver/update-config

运行 user/create-account 后,我​​想调用 webserver/update-config - 是否可以通过代码从 Yii 中执行此操作?或者我是否必须使用 exec()/system() 从外部调用第二个 yii php 脚本(我不想这样做)。

任何帮助/见解将不胜感激!

最佳答案

经过一番考虑,我选择从另一个 Controller 中调用一个 Controller 的方式是使用 Controller 的 runAction 方法(这也是 Yii 开发人员推荐的方式)。

控制台应用程序示例:

\Yii::$app->runAction('webserver/update-config');

也可以通过使用数组作为第二个参数来传递参数。

一个简单参数的例子:

\Yii::$app->runAction('webserver/update-config', ['oneValue', 'anotherValue'];

这里是命名参数的例子:

\Yii::$app->runAction('webserver/update-config', [
'servertype' => 'oneSetting',
'serverdir' => 'anotherSettingValue'
]);

请注意,这使得被调用的 Controller 成为调用代码的一部分。因此,如果被调用的 Controller 由于某种原因失败,整个程序就会失败。良好的错误处理是必须的。在被调用的 Controller 中,您可以使用 return 设置错误代码以返回。

例子:

调用代码行:

$iExitCode = \Yii::$app->runAction('webserver/update-config', ['oneValue', 'anotherValue'];

调用 Controller :

<?php
namespace app\commands;

use yii\console\Controller;

/**
* Webserver related functions
*/
class WebserverController extends Controller {
public function actionUpdateConfig($oneValue, $anotherValue) {
// Code that does something
if ($success) return 0;
else return 1;
}
}
?>

关于php - Yii2 - 从另一个控制台命令中调用 Yii 控制台命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33420124/

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