* @license MIT */ final class ClassSignatureGenerator implements ClassSignatureGeneratorInterface { /** * @var SignatureGeneratorInterface */ private $signatureGenerator; /** * @param SignatureGeneratorInterface $signatureGenerator */ public function __construct(SignatureGeneratorInterface $signatureGenerator) { $this->signatureGenerator = $signatureGenerator; } /** * {@inheritDoc} * * @throws \Zend\Code\Exception\InvalidArgumentException */ public function addSignature(ClassGenerator $classGenerator, array $parameters) : ClassGenerator { $classGenerator->addPropertyFromGenerator(new PropertyGenerator( 'signature' . $this->signatureGenerator->generateSignatureKey($parameters), $this->signatureGenerator->generateSignature($parameters), PropertyGenerator::FLAG_STATIC | PropertyGenerator::FLAG_PRIVATE )); return $classGenerator; } }