/** * Main * * @param string[] args * @return int */ public static function main(array $args) { Console::writeLinef('XP %s { PHP %s & ZE %s } @ %s', xp::version(), phpversion(), zend_version(), php_uname()); Console::writeLine('Copyright (c) 2001-2013 the XP group'); foreach (ClassLoader::getLoaders() as $delegate) { Console::writeLine($delegate->toString()); } return 1; }
/** * Find first classloader responsible for a given path * * @param string path * @return lang.IClassLoader */ protected function findLoaderFor($path) { foreach (ClassLoader::getLoaders() as $cl) { if (0 === strncmp($cl->path, $path, strlen($cl->path))) { return $cl; } } return NULL; }
/** * Main * * @param string[] args */ public static function main(array $args) { if (sizeof($args) < 1 || '' == $args[0]) { Console::$err->writeLine('*** No class or package name given'); return 2; } // Check whether a file, class or a package directory or name is given $cl = ClassLoader::getDefault(); if (strstr($args[0], xp::CLASS_FILE_EXT)) { $class = self::findClassBy(new File($args[0])); } else { if ($cl->providesClass($args[0])) { $class = XPClass::forName($args[0], $cl); } else { if (strcspn($args[0], '\\/') < strlen($args[0])) { $package = self::findPackageBy(new Folder($args[0])); } else { $package = $args[0]; } $provided = FALSE; foreach (ClassLoader::getLoaders() as $loader) { if (!$loader->providesPackage($package)) { continue; } Console::writeLine('@', $loader); $provided = TRUE; } if ($provided) { self::printPackage(Package::forName($package)); return 0; } // Not found Console::$err->writeLine('*** Failed to locate either a class or a package named "', $args[0], '", tried all of {'); foreach (ClassLoader::getLoaders() as $loader) { Console::$err->writeLine(' ', $loader); } Console::$err->writeLine('}'); return 1; } } Console::writeLine('@', $class->getClassLoader()); if ($class->isInterface()) { self::printInterface($class); } else { if ($class->isEnum()) { self::printEnum($class); } else { self::printClass($class); } } return 0; }
public function after_via_inspect() { $loader = $this->track(ClassLoader::registerPath('.', NULL)); $loaders = ClassLoader::getLoaders(); $this->assertEquals($loader, $loaders[sizeof($loaders) - 1]); }