/** * @return js\fs\File */ public function searchClassEx($sSubFolder, $sShortClassName) { if (!($sClassFile = parent::searchClassEx($sSubFolder, $sShortClassName))) { $sClassFile = $this->generateShadowlClass($sShortClassName); } return $sClassFile; }
/** * @return Package */ public function addPackage($sNamespace, $folder = null, $nPriority = Package::source) { if ($sNamespace instanceof Package) { $aPackage = $sNamespace; } else { if ($folder instanceof Folder) { $aPackage = new Package($sNamespace, $folder); } else { $aPackage = new Package($sNamespace, Package::findFolder($folder)); } } // 增加一个优先级 if (!array_key_exists($nPriority, $this->arrPackages)) { $this->arrPackages[$nPriority] = array(); // 保证优先级排序 ksort($this->arrPackages); } $this->arrPackages[$nPriority][$aPackage->ns()] = $aPackage; $this->sPackagesSignature = null; return $aPackage; }
public function __construct(Package $aPackage, $sSubNs = null) { if ($sSubNs) { $aFolder = $aPackage->folder()->findFolder(str_replace('\\', '/', $sSubNs)); } else { $aFolder = $aPackage->folder(); } $arrClasses = array(); if ($aFolder) { foreach ($aFolder->iterator(FSIterator::CONTAIN_FILE | FSIterator::RECURSIVE_SEARCH) as $sSubPath) { if (!preg_match('/(.+)\\.php$/i', $sSubPath, $arrRes)) { continue; } $sSubPath = $arrRes[1]; if ($sSubNs) { $sClass = $aPackage->ns() . '\\' . $sSubNs . '\\' . str_replace('/', '\\', $sSubPath); } else { $sClass = $aPackage->ns() . '\\' . str_replace('/', '\\', $sSubPath); } $arrClasses[] = $sClass; } } parent::__construct($arrClasses); }