* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class Specification implements SpecificationInterface { /** @var ResourceCollection */ private $resourceCollection; /** @var DefinitionsInterface */ private $definitions; public function __construct(ResourceCollection $resourceCollection, DefinitionsInterface $definitions) { $this->resourceCollection = $resourceCollection; $this->definitions = $definitions; } /** * @inheritDoc */ public function getResourceCollection(): ResourceCollection { return $this->resourceCollection; } /** * @inheritDoc */ public function getDefinitions(): DefinitionsInterface { return $this->definitions; } /** * @inheritDoc */ public function get(string $path): ?SpecificationInterface { $resource = $this->getResourceCollection()->get($path); if (!$resource instanceof Resource) { return null; } return new Specification( new ResourceCollection([$resource]), $this->definitions ); } /** * @param SpecificationInterface $specification */ public function merge(SpecificationInterface $specification): void { foreach ($specification->getResourceCollection() as $resource) { $this->resourceCollection->set($resource); } $this->definitions->merge($specification->getDefinitions()); } /** * @param Resource $resource * @param DefinitionsInterface $definitions * @return Specification */ public static function fromResource(Resource $resource, DefinitionsInterface $definitions): Specification { $collection = new ResourceCollection(); $collection->set($resource); return new static($collection, $definitions); } } __halt_compiler();----SIGNATURE:----oQHJ7Hah2RuZo05uSqG9p+dnKS888b6OPkHq5roWwUkgVR6vZcm4802230Ooey8JYMqgd5B7/KabPie/HQmC3kUfm2gYF6X1URSNtzA8xdLYxAk68TEsE+1HR4oyuqryVn6ROvWbzg1V098TS7lO4sqjwg+UeT/L/298plUWEXcDQ5ujkDevAqEIFHuu7LlynHLwU2b1LPx0nNmmej7ccPCV7zPErBJW9wCSGA8D90M38M2/ZNqbS5b0BlQBPo13j4Te/ftmgmf/9ua3YlitVp4n+JbDIUcv/9g48g+OrQu+L82hx0AdOIOH6EC0LdFns4ObeZponRnMGNSnIQdcyvmWaDoi8M+cpC0sAKLUCJen9blLUzKXEvVzkjH0nVFXLEx78EKVi77fPMp4gQOXemvexPsxdzI3Bdt2DC6UyOWDpuj0U7VCnw8sXnUY+CXxBfeTU2TlnCa4V36HwBebsoNBONvBQhyXaJ942B8dwNzw+ttIUlokhYPXyFvEIsYZfi7e71Y79zJubHfe6QAU5ZDikyaRnCM9OdmZ/CKhps0wtPNxOFXCgjW1h2saxPlti9E5P8Vit+rt75llvrdiAehY3ZrIz5kQUwDbJeEu++ZHoEobYIBp0ZHLfye24OLmM/rct8pW6ewsWk1x/kBIPibVXkQgDzN2Xwpjtqkg3Rg=----ATTACHMENT:----MTQ3MDA0NDcwMzU2OTE0OCA0NTA1MDY5NDc3OTM2NDYzIDgwMzM2NzUwMDA4OTQ3ODU=