All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 3m3s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 16s
Build, Push and Deploy / deploy-staging (push) Successful in 32s
Build, Push and Deploy / deploy-production (push) Has been skipped
Build, Push and Deploy / cleanup (push) Successful in 1s
60 lines
1.4 KiB
PHP
60 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Mollie\Api;
|
|
|
|
use Mollie\Api\Exceptions\IncompatiblePlatform;
|
|
|
|
class CompatibilityChecker
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
public const MIN_PHP_VERSION = "7.2";
|
|
|
|
/**
|
|
* @throws IncompatiblePlatform
|
|
* @return void
|
|
*/
|
|
public function checkCompatibility()
|
|
{
|
|
if (! $this->satisfiesPhpVersion()) {
|
|
throw new IncompatiblePlatform(
|
|
"The client requires PHP version >= " . self::MIN_PHP_VERSION . ", you have " . PHP_VERSION . ".",
|
|
IncompatiblePlatform::INCOMPATIBLE_PHP_VERSION
|
|
);
|
|
}
|
|
|
|
if (! $this->satisfiesJsonExtension()) {
|
|
throw new IncompatiblePlatform(
|
|
"PHP extension json is not enabled. Please make sure to enable 'json' in your PHP configuration.",
|
|
IncompatiblePlatform::INCOMPATIBLE_JSON_EXTENSION
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @codeCoverageIgnore
|
|
*/
|
|
public function satisfiesPhpVersion()
|
|
{
|
|
return (bool)version_compare(PHP_VERSION, self::MIN_PHP_VERSION, ">=");
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @codeCoverageIgnore
|
|
*/
|
|
public function satisfiesJsonExtension()
|
|
{
|
|
// Check by extension_loaded
|
|
if (function_exists('extension_loaded') && extension_loaded('json')) {
|
|
return true;
|
|
} elseif (function_exists('json_encode')) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|