| 1 | <?php |
||
| 15 | final class SignatureChecker implements SignatureCheckerInterface |
||
| 16 | { |
||
| 17 | private SignatureGeneratorInterface $signatureGenerator; |
||
|
|
|||
| 18 | |||
| 19 | public function __construct(SignatureGeneratorInterface $signatureGenerator) |
||
| 20 | { |
||
| 21 | 3 | $this->signatureGenerator = $signatureGenerator; |
|
| 22 | } |
||
| 23 | 3 | ||
| 24 | 3 | /** |
|
| 25 | * {@inheritDoc} |
||
| 26 | */ |
||
| 27 | public function checkSignature(ReflectionClass $class, array $parameters) : void |
||
| 28 | { |
||
| 29 | 3 | $propertyName = 'signature' . $this->signatureGenerator->generateSignatureKey($parameters); |
|
| 30 | $signature = $this->signatureGenerator->generateSignature($parameters); |
||
| 31 | 3 | $defaultProperties = $class->getDefaultProperties(); |
|
| 32 | 3 | ||
| 33 | 3 | if (! array_key_exists($propertyName, $defaultProperties)) { |
|
| 34 | throw MissingSignatureException::fromMissingSignature($class, $parameters, $signature); |
||
| 35 | 3 | } |
|
| 36 | 1 | ||
| 37 | if ($defaultProperties[$propertyName] !== $signature) { |
||
| 38 | throw InvalidSignatureException::fromInvalidSignature( |
||
| 39 | 2 | $class, |
|
| 40 | 1 | $parameters, |
|
| 41 | 1 | $defaultProperties[$propertyName], |
|
| 42 | 1 | $signature |
|
| 43 | 1 | ); |
|
| 44 | 1 | } |
|
| 45 | } |
||
| 46 | } |
||
| 47 |