亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

composer中的scripts如何傳遞參數(shù)

尼克
發(fā)布: 2025-10-18 12:06:02
原創(chuàng)
519人瀏覽過
答案:Composer腳本不直接支持命令行傳參,推薦使用環(huán)境變量傳遞參數(shù)。通過MY_ARG=value composer run my-script設置環(huán)境變量,在PHP腳本中用getenv()讀取;或結合shell腳本封裝并導出變量,再在腳本中接收$event->getArguments()獲取有限上下文信息,但最穩(wěn)定方式仍是環(huán)境變量。

composer中的scripts如何傳遞參數(shù)

在 Composer 中,scripts 是定義在 composer.json 中的自定義命令鉤子,比如在安裝、更新或 dump 自動加載時觸發(fā)。但這些腳本本身不直接支持通過命令行傳參,需要一些技巧來實現(xiàn)參數(shù)傳遞。

1. 使用環(huán)境變量傳參

最常用的方式是通過設置環(huán)境變量,在腳本執(zhí)行時讀取這些變量。

例如,在命令行中運行:

composer run my-script -- --some-option=value

上面這樣寫并不會自動把參數(shù)傳進 PHP 腳本,你需要換一種方式:

改用環(huán)境變量:

MY_ARG=value composer run my-script

然后在你的 PHP 腳本中獲?。?/p>

$arg = getenv('MY_ARG') ?: 'default';
echo "Received: $arg";
登錄后復制

對應的 composer.json 配置:

"scripts": {
    "my-script": "MyNamespace\Script::run"
}
登錄后復制

2. 通過 Composer 參數(shù)傳入(有限支持)

Composer 的 run-script 命令允許附加參數(shù),但這些參數(shù)會作為全局選項處理,并不會自動傳給腳本方法。

你可以這樣嘗試:

如知AI筆記
如知AI筆記

如知筆記——支持markdown的在線筆記,支持ai智能寫作、AI搜索,支持DeepseekR1滿血大模型

如知AI筆記27
查看詳情 如知AI筆記
composer run my-script -- --verbose

但注意:這些參數(shù)是傳給 Composer 自身的,不是直接傳給腳本函數(shù)的。除非你在腳本中解析 $_SERVER['argv'],否則無法獲取。

如果你一定要從 argv 解析,可以在腳本中這么做:

// 注意:這種方式只在以 bin 形式調(diào)用或特殊配置下有效
global $argv;
foreach ($argv as $arg) {
    if (strpos($arg, '--key=') === 0) {
        $value = substr($arg, 6);
    }
}
登錄后復制

但這通常不可靠,因為 Composer 并不保證將參數(shù)透傳到靜態(tài)方法中。

3. 推薦做法:使用環(huán)境變量 + 包裝腳本

更清晰的方式是寫一個小型包裝腳本,通過 shell 設置變量再調(diào)用 Composer:

#!/bin/bash
export SCRIPT_MODE="dev"
export DEBUG=true
composer run custom-command

PHP 腳本中讀?。?/p>

class Script {
    public static function customCommand($event) {
        $mode = getenv('SCRIPT_MODE') ?: 'prod';
        $debug = getenv('DEBUG') === 'true';
<pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">    echo "Running in $mode mode, debug: " . ($debug ? 'on' : 'off');
}
登錄后復制

}

4. 利用事件對象獲取信息

雖然不能直接傳參數(shù),但腳本可以接收 ComposerScriptEvent 對象,從中獲取一些上下文:

public static function myScript($event) {
    $args = $event->getArguments(); // 獲取命令行參數(shù)(如果有的話)
    $io = $event->getIO();
}
登錄后復制

但注意:getArguments() 只有在通過某些特定命令(如 create-project)觸發(fā)腳本時才有值,普通 run-script 不會填充它。

基本上就這些。Composer 腳本本身設計上不是為了接收復雜參數(shù),所以最穩(wěn)定的方式還是用環(huán)境變量控制行為。不復雜但容易忽略。

以上就是composer中的scripts如何傳遞參數(shù)的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!

最佳 Windows 性能的頂級免費優(yōu)化軟件
最佳 Windows 性能的頂級免費優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號