当前位置: 首页>>代码示例>>PHP>>正文


PHP ClassLoader::getLoaders方法代码示例

本文整理汇总了PHP中lang\ClassLoader::getLoaders方法的典型用法代码示例。如果您正苦于以下问题:PHP ClassLoader::getLoaders方法的具体用法?PHP ClassLoader::getLoaders怎么用?PHP ClassLoader::getLoaders使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在lang\ClassLoader的用法示例。


在下文中一共展示了ClassLoader::getLoaders方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: findLoaderFor

 /**
  * Find first classloader responsible for a given path
  *
  * @param   string path
  * @return  lang.IClassLoader
  */
 protected function findLoaderFor($path)
 {
     foreach (\lang\ClassLoader::getLoaders() as $cl) {
         if ($cl instanceof \lang\FileSystemClassLoader && 0 === strncmp($cl->path, $path, strlen($cl->path))) {
             return $cl;
         }
     }
     return null;
 }
开发者ID:johannes85,项目名称:core,代码行数:15,代码来源:FolderSource.class.php

示例2: main

 /**
  * 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-2015 the XP group');
     foreach (\lang\ClassLoader::getLoaders() as $delegate) {
         Console::writeLine($delegate->toString());
     }
     return 1;
 }
开发者ID:johannes85,项目名称:core,代码行数:15,代码来源:Version.class.php

示例3: sources

 /** @return php.Generator */
 public function sources()
 {
     $name = $this->package->name();
     foreach (ClassLoader::getLoaders() as $loader) {
         if ($loader->providesPackage($name)) {
             (yield $loader);
         }
     }
 }
开发者ID:xp-forge,项目名称:mirrors,代码行数:10,代码来源:PackageInformation.class.php

示例4: __construct

 /**
  * Constructor
  *
  * @param  io.Folder $folder
  * @throws lang.IllegalArgumentException if the given folder does not exist or isn't in class path
  */
 public function __construct(Folder $folder)
 {
     $path = $folder->getURI();
     foreach (ClassLoader::getLoaders() as $cl) {
         if ($cl instanceof FileSystemClassLoader && 0 === strncmp($cl->path, $path, strlen($cl->path))) {
             $this->loader = $cl;
             return;
         }
     }
     throw new IllegalArgumentException($folder->toString() . ($folder->exists() ? ' is not in class path' : ' does not exist'));
 }
开发者ID:xp-framework,项目名称:unittest,代码行数:17,代码来源:FolderSource.class.php

示例5: __construct

 /**
  * Creates a new directory information instance
  *
  * @param  string|io.Folder $folder
  */
 public function __construct($folder)
 {
     $this->folder = $folder instanceof Folder ? $folder : new Folder($folder);
     $uri = $this->folder->getURI();
     foreach (ClassLoader::getLoaders() as $loader) {
         if (0 === strncmp($uri, $loader->path, $l = strlen($loader->path)) && $loader->providesPackage($package = strtr(substr($uri, $l, -1), DIRECTORY_SEPARATOR, '.'))) {
             $this->loader = $loader;
             $this->package = new Package($package);
             return;
         }
     }
     throw new IllegalArgumentException('Cannot find ' . $uri . ' in class path');
 }
开发者ID:xp-forge,项目名称:mirrors,代码行数:18,代码来源:DirectoryInformation.class.php

示例6: serve

 /**
  * Serve requests
  *
  * @param  string $source
  * @param  string $profile
  * @param  io.Path $webroot
  * @param  io.Path $docroot
  * @param  string[] $config
  */
 public function serve($source, $profile, $webroot, $docroot, $config)
 {
     $runtime = Runtime::getInstance();
     $startup = $runtime->startupOptions();
     $backing = typeof($startup)->getField('backing')->setAccessible(true)->get($startup);
     // PHP doesn't start with a nonexistant document root
     if (!$docroot->exists()) {
         $docroot = getcwd();
     }
     // Start `php -S`, the development webserver
     $arguments = ['-S', $this->host . ':' . $this->port, '-t', $docroot];
     $options = newinstance(RuntimeOptions::class, [$backing], ['asArguments' => function () use($arguments) {
         return array_merge($arguments, parent::asArguments());
     }]);
     $options->withSetting('user_dir', $source . PATH_SEPARATOR . implode(PATH_SEPARATOR, $config));
     // Pass classpath (TODO: This is fixed in XP 7.6.0, remove once
     // this becomes minimum dependency)
     $cp = [];
     foreach (ClassLoader::getLoaders() as $delegate) {
         if ($delegate instanceof FileSystemClassLoader || $delegate instanceof ArchiveClassLoader) {
             $cp[] = $delegate->path;
         }
     }
     set_include_path('');
     $options->withClassPath($cp);
     // Export environment
     putenv('DOCUMENT_ROOT=' . $docroot);
     putenv('WEB_ROOT=' . $webroot);
     putenv('SERVER_PROFILE=' . $profile);
     Console::writeLine("[33m@", $this, "[0m");
     Console::writeLine("[1mServing ", (new Source($source, new Config($config)))->layout());
     Console::writeLine("[36m", str_repeat('═', 72), "[0m");
     Console::writeLine();
     with($runtime->newInstance($options, 'web', '', []), function ($proc) {
         $proc->in->close();
         Console::writeLine("[33;1m>[0m Server started: [35;4m", $this->url, "[0m (", date('r'), ')');
         Console::writeLine('  PID ', $proc->getProcessId(), '; press Ctrl+C to exit');
         Console::writeLine();
         while (is_string($line = $proc->err->readLine())) {
             Console::writeLine("  [36m", $line, "[0m");
         }
     });
 }
开发者ID:xp-framework,项目名称:scriptlet,代码行数:52,代码来源:Develop.class.php

示例7: main

 /**
  * Main
  *
  * @param   string[] $args
  * @return  int
  */
 public static function main(array $args)
 {
     if (empty($args)) {
         Console::writeLinef('XP %s { PHP %s & ZE %s } @ %s', \xp::version(), phpversion(), zend_version(), php_uname());
         Console::writeLine('Copyright (c) 2001-2016 the XP group');
         foreach (\lang\ClassLoader::getLoaders() as $delegate) {
             Console::writeLine($delegate->toString());
         }
         return 1;
     } else {
         foreach ($args as $arg) {
             $method = $arg . 'Version';
             if (is_callable(['self', $method])) {
                 Console::writeLine(self::$method());
             } else {
                 Console::$err->writeLinef('Unkown version argument `%s\'', $arg);
             }
         }
         return 0;
     }
 }
开发者ID:xp-framework,项目名称:core,代码行数:27,代码来源:Version.class.php

示例8: main

 /**
  * 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 = \lang\ClassLoader::getDefault();
     if (strstr($args[0], \xp::CLASS_FILE_EXT)) {
         $class = $cl->loadUri(realpath($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 (\lang\ClassLoader::getLoaders() as $loader) {
                 if (!$loader->providesPackage($package)) {
                     continue;
                 }
                 Console::writeLine('@', $loader);
                 $provided = true;
             }
             if ($provided) {
                 self::printPackage(\lang\reflect\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 (\lang\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;
 }
开发者ID:melogamepay,项目名称:xp-framework,代码行数:57,代码来源:Reflect.class.php

示例9: after_via_inspect

 public function after_via_inspect()
 {
     $loader = $this->track(ClassLoader::registerPath('.', null));
     $loaders = ClassLoader::getLoaders();
     $this->assertEquals($loader, $loaders[sizeof($loaders) - 1]);
 }
开发者ID:xp-framework,项目名称:core,代码行数:6,代码来源:ClassPathTest.class.php

示例10: main

 /**
  * Entry point method
  *
  * @param   string[] args
  */
 public static function main(array $args)
 {
     if (empty($args)) {
         return self::usage();
     }
     foreach (ClassLoader::getLoaders() as $loader) {
         if ($loader instanceof JitClassLoader) {
             ClassLoader::removeLoader($loader);
         }
     }
     // Set up compiler
     $compiler = new Compiler();
     $manager = new FileManager();
     $manager->setSourcePaths(\xp::$classpath);
     // Handle arguments
     $profiles = ['default'];
     $emitter = 'php5.5';
     $result = function ($success) {
         return $success ? 0 : 1;
     };
     $files = [];
     $listener = new DefaultDiagnosticListener(Console::$out);
     for ($i = 0, $s = sizeof($args); $i < $s; $i++) {
         if ('-?' === $args[$i] || '--help' === $args[$i]) {
             return self::usage();
         } else {
             if ('-cp' === $args[$i]) {
                 \lang\ClassLoader::registerPath($args[++$i]);
             } else {
                 if ('-sp' === $args[$i]) {
                     $manager->addSourcePath($args[++$i]);
                 } else {
                     if ('-v' === $args[$i]) {
                         $listener = new VerboseDiagnosticListener(Console::$out);
                     } else {
                         if ('-q' === $args[$i]) {
                             $listener = new QuietDiagnosticListener(Console::$out);
                         } else {
                             if ('-t' === $args[$i]) {
                                 $levels = LogLevel::NONE;
                                 foreach (explode(',', $args[++$i]) as $level) {
                                     $levels |= LogLevel::named($level);
                                 }
                                 $compiler->setTrace(create(new LogCategory('xcc'))->withAppender(new ConsoleAppender(), $levels));
                             } else {
                                 if ('-E' === $args[$i]) {
                                     $emitter = $args[++$i];
                                 } else {
                                     if ('-p' === $args[$i]) {
                                         $profiles = explode(',', $args[++$i]);
                                     } else {
                                         if ('-o' === $args[$i]) {
                                             $output = $args[++$i];
                                             $folder = new Folder($output);
                                             $folder->exists() || $folder->create();
                                             $manager->setOutput($folder);
                                         } else {
                                             if ('-N' === $args[$i]) {
                                                 $dir = $args[++$i];
                                                 $manager->addSourcePath($dir);
                                                 $files = array_merge($files, self::fromFolder($dir, false));
                                             } else {
                                                 if (is_dir($args[$i])) {
                                                     $dir = $args[$i];
                                                     $manager->addSourcePath($dir);
                                                     $files = array_merge($files, self::fromFolder($dir, true));
                                                 } else {
                                                     $files[] = new FileSource(new File($args[$i]));
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     // Check
     if (empty($files)) {
         Console::$err->writeLine('*** No files given (-? will show usage)');
         return 2;
     }
     // Setup emitter
     sscanf($emitter, '%[^0-9]%d.%d', $language, $major, $minor);
     try {
         $emit = \lang\XPClass::forName('xp.compiler.emit.Emitter')->cast(Package::forName('xp.compiler.emit')->getPackage($language)->loadClass(($major ? 'V' . $major . $minor : '') . 'Emitter')->newInstance());
     } catch (\lang\ClassCastException $e) {
         Console::$err->writeLine('*** Not an emitter implementation: ', $e->compoundMessage());
         return 4;
     } catch (\lang\IllegalAccessException $e) {
         Console::$err->writeLine('*** Cannot use emitter named "', $emitter, '": ', $e->compoundMessage());
         return 4;
//.........这里部分代码省略.........
开发者ID:xp-lang,项目名称:compiler,代码行数:101,代码来源:CompileRunner.class.php

示例11: newInstance

 /**
  * Create a new runtime instance.
  *
  * @param   lang.RuntimeOptions options default NULL
  * @param   string bootstrap default 'class'
  * @param   string class default NULL entry point class
  * @param   string[] arguments default []
  * @param   string cwd default NULL the working directory
  * @param   [:string] default NULL the environment
  * @return  lang.Process
  */
 public function newInstance(RuntimeOptions $options = null, $bootstrap = 'class', $class = null, $arguments = [], $cwd = null, $env = null)
 {
     // Use unmodified startup options if none are passed
     if (null === $options) {
         $options = $this->startupOptions();
     }
     // Inherit all currently loaded paths acceptable to bootstrapping
     $include = '.';
     foreach (ClassLoader::getLoaders() as $delegate) {
         if ($delegate instanceof FileSystemClassLoader || $delegate instanceof ArchiveClassLoader) {
             $include .= PATH_SEPARATOR . $delegate->path;
         }
     }
     // If a bootstrap script is given, it will expect the include_path setting to be
     // in the form `[MODULES];;[CLASSPATH]` (both starting with a dot).
     if (null !== $bootstrap) {
         $include = '.' . PATH_SEPARATOR . PATH_SEPARATOR . $include;
     }
     // Append extra class path elements
     if ($cp = $options->getClassPath()) {
         $include .= PATH_SEPARATOR . implode(PATH_SEPARATOR, $cp);
     }
     $cmdline = array_merge($options->withSetting('include_path', $include)->withSetting('encoding', null)->asArguments(), $bootstrap ? [$this->bootstrapScript($bootstrap)] : [], $class ? [$class] : []);
     // Pass XP_CMDLINE via environment - part 2 of workaround from above,
     // see inline comment in startup() method for details
     if ($this->startup('env')) {
         putenv('XP_CMDLINE=' . implode('|', $cmdline));
     }
     // Finally, fork executable
     $pass = array_map(function ($arg) {
         return iconv(\xp::ENCODING, 'utf-7', $arg);
     }, $arguments);
     return $this->getExecutable()->newInstance(array_merge($cmdline, $pass), $cwd, $env);
 }
开发者ID:xp-framework,项目名称:core,代码行数:45,代码来源:Runtime.class.php


注:本文中的lang\ClassLoader::getLoaders方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。