我在Zend Framework 2中开发了一个CLI命令。我想从控制器运行它。我怎样才能在Zend Framework 2中做到这一点?
答案 0 :(得分:0)
您应该将您的请求转发到您想到的特定CLI ConsoleController。您可以使用Forward
插件来实现此目的。例如:
class HttpController extends AbstractActionController
{
public function indexAction()
{
// do some stuff
$response = $this->forward()->dispatch(ConsoleController::class, ['action' => 'process']);
// do stuff with your response | array
$bar = $response['foo'];
}
}
class ConsoleController extends AbstractActionController
{
public function processAction()
{
// do stuff
return ['foo' => 'bar'];
}
}
请注意,我在第一个参数中调用ConsoleController::class
。您应该与配置中注册控制器的方式相匹配。
return [
'controllers' => [
'factories' => [
HttpController::class => InvokableFactory::class,
ConsoleController::class => InvokableFactory::class,
],
'aliases' => [
'ConsoleController' => ConsoleController::class,
],
],
];
请注意,调用$this->forward()->dispatch('ConsoleController', ['action' => 'process'])
也是一个有效选项,因为Dispatch会查找已注册的控制器。
答案 1 :(得分:-1)
你可以这样做:
$cmd = "php filenameToRun.php";
shell_exec($cmd);
或者像这样:
$cmd = "pwd";
shell_exec($cmd);
或者像这样:
$cmd = "mkdir myNewFolder";
shell_exec($cmd);
您放入括号中的任何常规命令都可以。