* @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:----J8ZJBbjGJTTR0SWKR3JPXcWMDnwvmZLx7E+Ak3rpKLUud3u64omBJTd2lNqEJzU2zv0UrrYF6a4T3AP88QiQnt8W58NlgRVVs1dYZiFNx9XvKf1BwKiGCvKZ3MWnDWdG3EcqjMnOp1hH5o+ZcgMTSRCA/NbzWKQl95SuazkuB2Kmqv4UEwM1fkQnr+i1oMC1uR7r3H5Gwbg+ibj5kk43chvHmAZaLGoZKv1BD4oG6w+NivZzp/3yNUr5Pe7nxNA2z7SAsL27DAyPY1YOPmrtPFo1OdMymo8dvVSyThzn3Y0mk+dHIjdFxd1piUkVZCIzFcFtY//821A4kY2lrmQvT23TFZ/ALxnuwHQI7cI8+1Eiws6RHh0BgIftYg7uGm078LSRY2m+iXp2Srt8K8vu7h9aK4cNeIrVLOU4QGH6+YILoug6QbV83yGR68gD9RFdWxlZ69S3c3jiGYdtMrQ9fFPO/fVeXeEs1sMiVpa8pUC/fuN2IxiCM2I+U8NRtog3iBT/LDOxzQKxsFvnP3p2EPYVO1Bf8raPwbKh8nyKCPbvRvudFtKa+Wgq+bp5WCiLth6GNKW9tfVrieuR1HR3/5oxNY/5zhGx/GT/Lp782Ez1K1MrlvM6VqX+XlNhle3t2OQDBJsL1b1YSgaByrYmdcBdLPAad6eSd6IfYMzabaM=----ATTACHMENT:----NDUyMDQ1NzgwODM4NDI0OSA0MTQ0OTA4MzU0MjMyODkgOTU3NDQ0OTgxODc4MDQ0OA==