|
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