wyrihaximus/get-in-packages-composer.jason

围绕 joshdifabio/composed 和 igorw/get-in 的函数,从 composer.json 中收集配置

2.0.0 2022-01-22 22:47 UTC

README

Build Status Latest Stable Version Total Downloads Code Coverage License PHP 7 ready

安装

要通过 Composer 安装,请使用以下命令,它将自动检测最新版本并将其与 ^ 绑定。

composer require wyrihaximus/get-in-packages-composer.jason 

功能

以下示例是根据以下 composer.json 制作的

{
    "extra": {
        "react-inspector": {
            "metrics": [
                "ticks.future.current",
                "ticks.future.total",
                "ticks.future.ticks",
                "signals.current",
                "signals.total",
                "signals.ticks"
            ],
            "reset": {
                "ticks": [
                    "ticks.future.ticks",
                    "signals.ticks"
                ]
            }
        },
        "reactive-apps": {
            "command": {
                "ReactiveApps\\Command\\HttpServer\\Command": "src/Command"
            },
            "config": [
                "etc/config/app.php",
                "etc/config/http-server.php",
                "etc/config/supervisor.php"
            ]
        }
    }
}

get_in_packages_composer

获取所有具有给定键的包的配置。传入包实例作为键,以及来自 composer.json 的配置作为值

/**
 * @var Composed\Package $package
 * @var mixed            $config
 */
foreach (get_in_packages_composer('extra') as $package => $config) {
    $packagesConfig->add($package, $config);
}

from_get_in_packages_composer

get_in_packages_composer 相同,但使用 yield from 产生每个包中的项目

foreach (from_get_in_packages_composer('extra.react-inspector.metrics') as $item) {
    // $item: [
    // ticks.future.current,
    // ticks.future.total,
    // ticks.future.ticks,
    // signals.current,
    // signals.total,
    // signals.ticks,
    // ]
}

get_in_packages_composer_path

基于 get_in_packages_composer 构建,get_in_packages_composer_path 遍历来自 get_in_packages_composer 的每个包的所有配置项,并获取给定项目值的完整路径。这对于例如配置自动发现很有用

foreach (get_in_packages_composer_path('extra.reactive-apps.config') as $path) {
    $config->loadFromFile($path);
}

get_in_packages_composer_with_path

get_in_packages_composer_path 作用相同,但不是为每个项目下完整路径,而是使用该完整路径作为项目的键,以及项目的键和值。对于扫描文件目录并具有根命名空间很有用

foreach (get_in_packages_composer_with_path('extra.reactive-apps.command') as $path => $namespacePrefix) {
    $commands->scan($path, $namespacePrefix);
}

许可证

MIT 许可证 (MIT)

版权所有 (c) 2018 Cees-Jan Kiewiet

在此特此授予任何获得本软件及其相关文档文件(“软件”)副本的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供的人这样做,但受以下条件的约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和不侵犯版权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是根据合同、侵权或其他方式产生的,无论该责任是否与软件或其使用或其他方式有关。