priorityOrder = $priorityOrder; } /** * @param UIAssetCatalog $uiAssetCatalog * @return UIAssetCatalog */ public function sortUIAssetCatalog($uiAssetCatalog) { $sortedCatalog = new UIAssetCatalog($this); foreach ($this->priorityOrder as $filePattern) { $assetsMatchingPattern = array_filter($uiAssetCatalog->getAssets(), function ($uiAsset) use ($filePattern) { return preg_match('~^' . $filePattern . '~', $uiAsset->getRelativeLocation()); }); foreach ($assetsMatchingPattern as $assetMatchingPattern) { $sortedCatalog->addUIAsset($assetMatchingPattern); } } $this->addUnmatchedAssets($uiAssetCatalog, $sortedCatalog); return $sortedCatalog; } /** * @param UIAssetCatalog $uiAssetCatalog * @param UIAssetCatalog $sortedCatalog */ private function addUnmatchedAssets($uiAssetCatalog, $sortedCatalog) { foreach ($uiAssetCatalog->getAssets() as $uiAsset) { $sortedCatalog->addUIAsset($uiAsset); } } }