Интересно, есть ли способ получить версию composer.json с контроллера с Symfony. Мой composer.json выглядит так:
{
"name": "myProject",
"version": "0.0.0",
"description": "myProject description",
"license": "AGPL-3.0",
"type": "project",
"require": {
"php": "^7.1.3",
...
}
}
Я не могу найти упоминания об этом.
PS: Я использую Symfony 4.




Вы можете сделать что-то вроде этого:
$filename = $this->getParameter('%app.kernel_dir%') . '/../composer.json';
$composerData = json_decode(file_get_contents($filename), true);
$version = $composerData['version'];
Затем переменная должна содержать значение 0.0.0 из вашего примера.
Это предполагает, что ваш контроллер расширяет базовый контроллер для доступа к параметру %app.kernel_dir%. Если нет, вы также можете использовать относительный путь от вашего контроллера или что-то еще, чтобы определить местоположение composer.json
Вы можете использовать библиотеку PackageVersions и ее родственник PrettyPackageVersions.
Они предоставляют единый класс API для получения текущей установленной версии ваших зависимостей Composer, например:
use PackageVersions\Versions;
use Jean85\PrettyVersions;
// Will output "1.0.0@0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
echo Versions::getVersion('myvendor/mypackage');
// Will output "1.0.0"
echo (string) PrettyVersions::getVersion('myvendor/mypackage');
Без пакетов с Composer вы можете использовать $version = \Composer\InstalledVersions::getPrettyVersion('package/package-name')
Обращаясь к ответу Салам, вы также можете получить версию собственного проекта (названную root package в мире композиторов), хранящуюся в composer.json, с помощью:
$version = \Composer\InstalledVersions::getRootPackage()['version'];
или для более красивой печати:
$version = \Composer\InstalledVersions::getRootPackage()['pretty_version'];
что ты уже испробовал? Где ты застрял? Обычно это обычный JSON-файл, который можно анализировать, как и любой другой.