如何在编译器安装后运行Symfony控制台命令? [英] How do I run a Symfony Console command after composer install?

查看:222
本文介绍了如何在编译器安装后运行Symfony控制台命令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 composer.json 包含以下声明:

    "post-install-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ],

我想运行一个自定义控制台命令, code> src / MyBundle / Command / MyCommand.php 。

I want to run a custom console command that I have in src/MyBundle/Command/MyCommand.php. How do I add this to the scripts to run in composer?

推荐答案

您可以看到后安装钩子对于Sensio DistributionBundle是如何工作的。

You can see how the postinstall hook work for the Sensio DistributionBundle.

例如,这是如何调用Acme演示包​​的 Hello World 命令:

As example, this is how you can call the Hello World command of the Acme Demo bundle:

ScriptHandler

<?php

namespace Acme\DemoBundle\Composer;

use Composer\Script\CommandEvent;

class ScriptHandler extends \Sensio\Bundle\DistributionBundle\Composer\ScriptHandler {


    /**
     * Call the demo command of the Acme Demo Bundle.
     *
     * @param $event CommandEvent A instance
     */
    public static function helloWorld(CommandEvent $event)
    {
        $options = self::getOptions($event);
        $consoleDir = self::getConsoleDir($event, 'hello world');

        if (null === $consoleDir) {
            return;
        }

//        $extraParam = '';
//        if (!$options['who']) {
//            $extraParam = ' --who';
//        }

        static::executeCommand($event, $consoleDir, 'acme:hello', $options['process-timeout']);
    }

}

json文件本身。

composer.json

"post-install-cmd": [
    "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
    "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
    "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
    "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
    "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
    "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
    "Acme\\DemoBundle\\Composer\\ScriptHandler::helloWorld"
],

测试

我扩展了sensio-distribution bundle版本的 ScriptHandler p>

I extend the ScriptHandler class of the sensio-distribution bundle of version:

sensio/distribution-bundle (v3.0.18)

希望这个帮助

这篇关于如何在编译器安装后运行Symfony控制台命令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆