<?php namespace BitWasp\Bitcoin\Key\KeyToScript\Decorator; use BitWasp\Bitcoin\Exceptions\DisallowedScriptDataFactoryException; use BitWasp\Bitcoin\Key\KeyToScript\Factory\KeyToScriptDataFactory; use BitWasp\Bitcoin\Key\KeyToScript\ScriptDataFactory; abstract class ScriptHashDecorator extends ScriptDataFactory { /** * @var KeyToScriptDataFactory */ protected $scriptDataFactory; /** * @var string[] */ protected $allowedScriptTypes = []; /** * @var string */ protected $decorateType; /** * ScriptHashDecorator constructor. * @param KeyToScriptDataFactory $scriptDataFactory * @throws DisallowedScriptDataFactoryException */ public function __construct(KeyToScriptDataFactory $scriptDataFactory) { if (!in_array($scriptDataFactory->getScriptType(), $this->allowedScriptTypes, true)) { throw new DisallowedScriptDataFactoryException("Unsupported key-to-script factory for this script-hash type."); } $this->scriptDataFactory = $scriptDataFactory; } /** * @return string */ public function getScriptType() { return sprintf("%s|%s", $this->decorateType, $this->scriptDataFactory->getScriptType()); } }