php – 如何从命令行将参数传递给作曲家脚本?

前端之家收集整理的这篇文章主要介绍了php – 如何从命令行将参数传递给作曲家脚本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试通过cli运行自定义编写器脚本,如下所示:

作曲家custom_script_cli –custom_argument

会发生什么是作曲家认为我要求作曲家是否要将该论点传递给作曲家而不是自定义脚本.

有没有办法在不强制将其添加自定义脚本本身的情况下执行此操作?

只有我发现与这个主题相关的是git issue from 2013,当时说这是不可能的.不确定4年后是否仍然如此.

只需像往常一样将它们附加到命令行,就可以将参数传递给自定义编写器脚本.但是,如果参数以一个或多个连字符开头(即通常称为命令行选项),则编写器会将该参数视为composer命令本身的选项,除非您使用特殊参数分隔运算符,– .

如果自定义脚本定义运行多个命令,则传递的参数将附加到每个命令.此外,您不能使用像$2这样的shell编程约定来引用单个参数.

如果自定义脚本由回调处理,则脚本有责任从参数中解析选项.从回调的角度来看,-c和-option = B之类的东西是参数.

给定一个具有以下内容的composer.json:

{
    "autoload": { "psr-4": { "MyVendor\\": "./" } },"scripts": {
        "pass-args-to-callback": [
            "MyVendor\\MyClass::myCallback"
        ],"pass-args-to-commands": [
            "echo one","echo two","@other-command"
        ],"other-command": [
            "echo three"
        ]
    }
}

并给出一个文件MyClass.PHP,其中包含以下内容

<?PHP
namespace MyVendor;

use Composer\Script\Event;
use Composer\Installer\PackageEvent;

class MyClass {
    public static function myCallback(Event $event) {
        var_dump($event->getArguments());
    }
}

步骤0:转储Autoloader以识别MyClass

$composer dump-autoload
Generating autoload files

测试1:显示没有参数分离运算符的情况

$composer pass-args-to-callback A --option=B -C


  [Symfony\Component\Console\Exception\RuntimeException]
  The "--option" option does not exist.


pass-args-to-callback [--dev] [--no-dev] [--] [<args>]...

测试2:显示参数和选项在回调中的显示方式

$composer pass-args-to-callback -- A --option=B -C
> MyVendor\MyClass::myCallback
array(3) {
  [0]=>
  string(1) "A"
  [1]=>
  string(10) "--option=B"
  [2]=>
  string(2) "-C"
}

测试3:显示如何将参数和选项附加到命令

$composer pass-args-to-commands -- A --option=B -C
> echo one 'A' '--option=B' '-C'
one A --option=B -C
> echo two 'A' '--option=B' '-C'
two A --option=B -C
> echo three 'A' '--option=B' '-C'
three A --option=B -C

参考:https://getcomposer.org/doc/articles/scripts.md

原文链接:https://www.f2er.com/php/134437.html

猜你在找的PHP相关文章