Ejemplo n.º 1
0
 /**
  * @return js\fs\File
  */
 public function searchClassEx($sSubFolder, $sShortClassName)
 {
     if (!($sClassFile = parent::searchClassEx($sSubFolder, $sShortClassName))) {
         $sClassFile = $this->generateShadowlClass($sShortClassName);
     }
     return $sClassFile;
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }
Ejemplo n.º 3
0
 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);
 }