Программно получить список установленных модулей композитора - PullRequest
0 голосов
/ 09 декабря 2018

Я ищу способ получить список установленных модулей композитора в моем приложении.Есть ли что-то вроде \Composer->getModules(), которое можно использовать?Я также хотел бы получить другие значения из файла composer.json, такие как тип пакета и другие вещи.Цель, которую я пытаюсь достичь, - это композитор, включающий модули в мою инфраструктуру и позволяющий приложению автоматически знать, что они есть, без какой-либо другой установки.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Я закончил, используя адаптацию ответа @ revo

function getComposerPackages() {
    $requiredModules = [];
    foreach( glob("vendor/*/*/composer.json") as $filePath ) {
        $jsonContent = file_get_contents($filePath);
        $jsonArray = json_decode($jsonContent, true);
        if (isset($jsonArray['require'])) {
            $requiredModules += $jsonArray['require'];
        }
    }
    return $requiredModules;
}

print_r(getComposerPackages());
0 голосов
/ 10 декабря 2018

Вы можете поработать с некоторыми итераторами, чтобы получить список пакетов required composer.Создайте файл в корне вашего проекта (где находится vendor) и добавьте приведенный ниже фрагмент кода.Это ищет все composer.json файлы в vendor каталоге или корне (а не в других каталогах, таких как src):

function getComposerPackages() {
    $directoryIterator = new RecursiveDirectoryIterator('./');
    $regexIterator = new RegexIterator(
        new RecursiveIteratorIterator($directoryIterator),
        '~^.(.)(?:vendor\1.*)?composer\.json$~',
        RecursiveRegexIterator::GET_MATCH
    );

    $requiredModules = [];
    foreach ($regexIterator as $filePath) {
        $jsonContent = file_get_contents($filePath[0]);
        $jsonArray = json_decode($jsonContent, true);
        if (isset($jsonArray['require'])) {
            $requiredModules += $jsonArray['require'];
        }
    }

    return $requiredModules;
}

print_r(getComposerPackages());

Вывод похож на это:

Array
(
    [aoepeople/scheduler] => v1.6.13
    [nwdthemes/revslider] => dev-master
    [churiart/blogomatic] => dev-master
    [php-pm/php-pm] => v1.0.4
    .
    .
    .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...