コード例 #1
0
ファイル: AssetManager.php プロジェクト: ejailesb/repo
 /**
  * Resolves asset dependencies.
  *
  * @param  AssetInterface   $asset
  * @param  AssetInterface[] $resolved
  * @param  AssetInterface[] $unresolved
  * @return AssetInterface[]
  * @throws \RuntimeException
  */
 public function resolveDependencies($asset, &$resolved = array(), &$unresolved = array())
 {
     $unresolved[$asset->getName()] = $asset;
     foreach ($asset->getDependencies() as $dependency) {
         if (!isset($resolved[$dependency])) {
             if (isset($unresolved[$dependency])) {
                 throw new \RuntimeException(sprintf('Circular asset dependency "%s > %s" detected.', $asset->getName(), $dependency));
             }
             if ($d = $this->registered->get($dependency)) {
                 $this->resolveDependencies($d, $resolved, $unresolved);
             }
         }
     }
     $resolved[$asset->getName()] = $asset;
     unset($unresolved[$asset->getName()]);
     return $resolved;
 }