eventpoints/composer-json-parser

将您的 composer.json 作为对象访问

1.0.0 2024-03-26 17:14 UTC

This package is not auto-updated.

Last update: 2024-09-29 20:38:20 UTC


README

提取所有 composer.json 文件数据,将其转换为对象,并提供一些有用的方法以便快速查询依赖数据。

  • 不再需要解析 JSON,节省时间。
  • 不再需要处理数组,无需烦扰数组键。
  • 不再需要处理不一致性和错误处理。

安装

composer require eventpoints/composer-json-parser

使用方法

基本使用

public function someMethod() : void 
{
    // This will extract the composer.json file data return a (Composer)[https://github.com/eventpoints/composer-json-parser/blob/main/src/Model/Composer.php] object 
    $composer = (new ParserFacade())->extract();
}

例如,任何集合的包(例如 $composer->getRequires())将返回一个 Doctrine 的 ArrayCollection,因此您可以访问所有可用的默认方法,这使得查询依赖项变得非常容易。例如,获取所有要求包并按版本大于 8.0 过滤的示例

public function someMethod() : void 
{
    $composer = (new ParserFacade())->extract();
    $package = $composer->getRequires()->findFirst(fn(int $key, Package $package) => $package->getPackageVersion()->getVersion() > 8.0 );
    var_dump($package);
    
    //  object(ComposerJsonParser\Model\Package)#21 (3) {
    //  ["name":"ComposerJsonParser\Model\Package":private]=>
    //  string(3) "php"
    //  ["type":"ComposerJsonParser\Model\Package":private]=>
    //  enum(ComposerJsonParser\Enum\PackageTypeEnum::DEVELOPMENT)
    //  ["packageVersion":"ComposerJsonParser\Model\Package":private]=>
    //  object(ComposerJsonParser\Model\PackageVersion)#22 (2) {
    //    ["version"]=>
    //    float(8.2)
    //    ["versionConstraints"]=>
    //    string(1) "^"
    //  }
    // }
}

按名称获取包的示例使用

public function someMethod() : void 
{
    $composer = (new ParserFacade())->extract();
    $package = $composer->getPackageByName('rector/rector');
    var_dump($package);
                
    // object(ComposerJsonParser\Model\Package)#29 (3) {
    //  ["name":"ComposerJsonParser\Model\Package":private]=>
    //  string(13) "rector/rector"
    //  ["type":"ComposerJsonParser\Model\Package":private]=>
    //  enum(ComposerJsonParser\Enum\PackageTypeEnum::REQUIRE)
    //  ["packageVersion":"ComposerJsonParser\Model\Package":private]=>
    //  object(ComposerJsonParser\Model\PackageVersion)#30 (2) {
    //    ["version"]=>
    //    float(0.18)
    //    ["versionConstraints"]=>
    //    string(1) "^"
    //  }
    // }
}