Completed
Push — master ( 64668c...67d5dd )
by Marcel
10s
created

getRequiredPhpConstraint()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace BeyondCode\SelfDiagnosis\Checks;
4
5
use Illuminate\Filesystem\Filesystem;
6
use Composer\Semver\Semver;
7
8
class CorrectPhpVersionIsInstalled implements Check
9
{
10
    /** @var Filesystem */
11
    private $filesystem;
12
13
    public function __construct(Filesystem $filesystem)
14
    {
15
        $this->filesystem = $filesystem;
16
    }
17
18
    /**
19
     * The name of the check.
20
     *
21
     * @param array $config
22
     * @return string
23
     */
24
    public function name(array $config): string
25
    {
26
        return trans('self-diagnosis::checks.correct_php_version_is_installed.name');
27
    }
28
29
    /**
30
     * Perform the actual verification of this check.
31
     *
32
     * @param array $config
33
     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
34
     * @return bool
35
     */
36
    public function check(array $config): bool
37
    {
38
        // we dont use the phpversion function because that adds more data to the number (Like: -1+ubuntu16.04)
39
        // that conflicts with the semver check
40
        return Semver::satisfies(
41
            PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION,
42
            $this->getRequiredPhpConstraint()
43
        );
44
    }
45
46
    /**
47
     * The error message to display in case the check does not pass.
48
     *
49
     * @param array $config
50
     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
51
     * @return string
52
     */
53
    public function message(array $config): string
54
    {
55
        return trans('self-diagnosis::checks.correct_php_version_is_installed.message', [
56
            'required' => $this->getRequiredPhpConstraint(),
57
            'used' => phpversion(),
58
        ]);
59
    }
60
61
    /**
62
     * @return mixed
63
     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
64
     */
65
    public function getRequiredPhpConstraint()
66
    {
67
        $composer = json_decode($this->filesystem->get(base_path('composer.json')), true);
68
        return array_get($composer, 'require.php');
69
    }
70
}
71