composer install命令行参数或参数到bin / console

时间:2015-12-22 22:14:56

标签: php symfony composer-php

我试图使我的symfony 3.0应用程序能够使用多个内核。 真正的目标:一个项目中的多个应用程序

一般来说一切都好。我编辑了bin / console它的内容完全如下。它完全正常,并通过php bin/console --app=api得到我需要的结果 但是,当我执行composer install bin/console抛出异常时,它自然不会知道--app参数。我希望制作类似composer install --app=api的内容以及将参数传递给bin/console的所需行为。我检查了文档,几乎互联网的每个像素都无法找到解决方案。

#!/usr/bin/env php
<?php

use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Debug\Debug;

// if you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
//umask(0000);

set_time_limit(0);

/**
 * @var Composer\Autoload\ClassLoader $loader
 */
$loader = require __DIR__.'/../apps/autoload.php';

$input = new ArgvInput();
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
$app = $input->getParameterOption(array('--app', '-a'));
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';

if ($debug) {
    Debug::enable();
}

switch ($app) {
    case 'api':
        $kernel = new ApiKernel($env, $debug);
        break;
    case 'frontend':
        $kernel = new FrontendKernel($env, $debug);
        break;
    default:
        throw new \InvalidArgumentException("[--app|-a=<app>]  app: api|frontend");
        break;
}

$application = new Application($kernel);
$application->getDefinition()->addOptions([
    new InputOption('--app', '-a', InputOption::VALUE_REQUIRED, 'The application to operate in.'),
]);
$application->run($input);

1 个答案:

答案 0 :(得分:1)

您可以使用composer install --no-scripts阻止安装后自动运行app/console

或者您可以完全删除bin/consolescripts部分中的composer.json命令,这可能更有意义。见https://github.com/symfony/symfony-standard/blob/master/composer.json#L33-L34

或者您可以使用环境变量而不是参数。