Example #1
0
 /**
  * Adds a source path element
  *
  * @param   string element
  */
 public function addSourcePath($element)
 {
     $resolved = realpath($element);
     if (is_dir($resolved)) {
         $l = FileSystemClassLoader::instanceFor($resolved, FALSE);
     } else {
         if (is_file($resolved)) {
             $l = ArchiveClassLoader::instanceFor($resolved, FALSE);
         } else {
             throw new IllegalArgumentException('Sourcepath element [' . $element . '] not found');
         }
     }
     $this->sourcepath[$l->hashCode()] = $l;
 }
 /**
  * Gets base folder
  *
  * @param   io.Folder
  */
 public function setBase(Folder $base)
 {
     $this->base = new Folder($base, '..');
     // Scan base path. FIXME: Refactor this to use lang.ClassLoader
     // instead of duplication its sourcecode here
     foreach (array_filter(explode(PATH_SEPARATOR, scanpath(array($base->getURI()), getenv('HOME')))) as $element) {
         $resolved = realpath($element);
         if (is_dir($resolved)) {
             $this->cl[] = FileSystemClassLoader::instanceFor($resolved, FALSE);
         } else {
             if (is_file($resolved)) {
                 $this->cl[] = ArchiveClassLoader::instanceFor($resolved, FALSE);
             }
         }
     }
 }
 /**
  * Register a class loader from a path
  *
  * @param   string element
  * @param   bool before default FALSE whether to register this as the first loader,
  *          NULL wheather to figure out position by inspecting $element
  * @return  lang.IClassLoader the registered loader
  * @throws  lang.ElementNotFoundException if the path cannot be found
  */
 public static function registerPath($element, $before = FALSE)
 {
     if (NULL === $before && '!' === $element[0]) {
         $before = TRUE;
         $element = substr($element, 1);
     } else {
         $before = (bool) $before;
     }
     if (is_dir($element)) {
         return self::registerLoader(FileSystemClassLoader::instanceFor($element), $before);
     } else {
         if (is_file($element)) {
             return self::registerLoader(ArchiveClassLoader::instanceFor($element), $before);
         }
     }
     raise('lang.ElementNotFoundException', 'Element "' . $element . '" not found');
 }