|
3 | 3 | namespace PHPStan\Php; |
4 | 4 |
|
5 | 5 | use Composer\Semver\VersionParser; |
6 | | -use Nette\Utils\Json; |
7 | | -use Nette\Utils\JsonException; |
8 | 6 | use Nette\Utils\Strings; |
9 | | -use PHPStan\File\CouldNotReadFileException; |
10 | | -use PHPStan\File\FileReader; |
| 7 | +use PHPStan\Internal\ComposerHelper; |
11 | 8 | use PHPStan\ShouldNotHappenException; |
12 | 9 | use function count; |
13 | 10 | use function end; |
14 | 11 | use function is_array; |
15 | | -use function is_file; |
16 | 12 | use function is_int; |
17 | 13 | use function is_string; |
18 | 14 | use function min; |
@@ -114,21 +110,18 @@ public function getMaxVersion(): ?PhpVersion |
114 | 110 | private function getComposerRequireVersion(): ?string |
115 | 111 | { |
116 | 112 | $composerPhpVersion = null; |
| 113 | + |
117 | 114 | if (count($this->composerAutoloaderProjectPaths) > 0) { |
118 | | - $composerJsonPath = end($this->composerAutoloaderProjectPaths) . '/composer.json'; |
119 | | - if (is_file($composerJsonPath)) { |
120 | | - try { |
121 | | - $composerJsonContents = FileReader::read($composerJsonPath); |
122 | | - $composer = Json::decode($composerJsonContents, Json::FORCE_ARRAY); |
123 | | - $requiredVersion = $composer['require']['php'] ?? null; |
124 | | - if (is_string($requiredVersion)) { |
125 | | - $composerPhpVersion = $requiredVersion; |
126 | | - } |
127 | | - } catch (CouldNotReadFileException | JsonException) { |
128 | | - // pass |
| 115 | + $composer = ComposerHelper::getComposerConfig(end($this->composerAutoloaderProjectPaths)); |
| 116 | + if ($composer !== null) { |
| 117 | + $requiredVersion = $composer['require']['php'] ?? null; |
| 118 | + |
| 119 | + if (is_string($requiredVersion)) { |
| 120 | + $composerPhpVersion = $requiredVersion; |
129 | 121 | } |
130 | 122 | } |
131 | 123 | } |
| 124 | + |
132 | 125 | return $composerPhpVersion; |
133 | 126 | } |
134 | 127 |
|
|
0 commit comments