加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 18:04:08 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试通过cli运行自定义编写器脚本,如下所示: 作曲家custom_script_cli –custom_argument 会发生什么是作曲家认为我要求作曲家是否要将该论点传递给作曲家而不是自定义脚本. 有没有办法在不强制将其添加到自定义脚本本身的情况下执行此操作? 只有我
我正在尝试通过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": [
            "MyVendorMyClass::myCallback"
        ],"pass-args-to-commands": [
            "echo one","echo two","@other-command"
        ],"other-command": [
            "echo three"
        ]
    }
}

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

<?php
namespace MyVendor;

use ComposerScriptEvent;
use ComposerInstallerPackageEvent;

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


  [SymfonyComponentConsoleExceptionRuntimeException]
  The "--option" option does not exist.


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

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

$composer pass-args-to-callback -- A --option=B -C
> MyVendorMyClass::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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读