61 lines
1.6 KiB
PHP
61 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Yoast\WHIPv2;
|
|
|
|
use Yoast\WHIPv2\Exceptions\InvalidType;
|
|
use Yoast\WHIPv2\Interfaces\Requirement;
|
|
|
|
/**
|
|
* Class Configuration.
|
|
*/
|
|
class Configuration {
|
|
|
|
/**
|
|
* The configuration to use.
|
|
*
|
|
* @var array<string>
|
|
*/
|
|
private $configuration;
|
|
|
|
/**
|
|
* Configuration constructor.
|
|
*
|
|
* @param array<string, string> $configuration The configuration to use.
|
|
*
|
|
* @throws InvalidType When the $configuration parameter is not of the expected type.
|
|
*/
|
|
public function __construct( $configuration = array() ) {
|
|
if ( ! \is_array( $configuration ) ) {
|
|
throw new InvalidType( 'Configuration', $configuration, 'array' );
|
|
}
|
|
|
|
$this->configuration = $configuration;
|
|
}
|
|
|
|
/**
|
|
* Retrieves the configured version of a particular requirement.
|
|
*
|
|
* @param Requirement $requirement The requirement to check.
|
|
*
|
|
* @return string|int The version of the passed requirement that was detected as a string.
|
|
* If the requirement does not exist, this returns int -1.
|
|
*/
|
|
public function configuredVersion( Requirement $requirement ) {
|
|
if ( ! $this->hasRequirementConfigured( $requirement ) ) {
|
|
return -1;
|
|
}
|
|
|
|
return $this->configuration[ $requirement->component() ];
|
|
}
|
|
|
|
/**
|
|
* Determines whether the passed requirement is present in the configuration.
|
|
*
|
|
* @param Requirement $requirement The requirement to check.
|
|
*
|
|
* @return bool Whether or not the requirement is present in the configuration.
|
|
*/
|
|
public function hasRequirementConfigured( Requirement $requirement ) {
|
|
return \array_key_exists( $requirement->component(), $this->configuration );
|
|
}
|
|
}
|