コード例 #1
0
ファイル: XPClass.class.php プロジェクト: xp-framework/core
 /**
  * Returns the XPClass object associated with the class with the given 
  * string name. Uses the default classloader if none is specified.
  *
  * @param   string name - e.g. "Exception", "io.File" or "lang.XPClass"
  * @param   lang.IClassLoader classloader default NULL
  * @return  lang.XPClass class object
  * @throws  lang.ClassNotFoundException when there is no such class
  */
 public static function forName($name, IClassLoader $classloader = null) : self
 {
     $p = strpos($name, '\\');
     if (false === $p) {
         // No backslashes, using dotted form
         $resolved = strtr($name, '.', '\\');
     } else {
         // Name literal
         $resolved = 0 === $p ? substr($name, 1) : $name;
         $name = strtr($resolved, '\\', '.');
     }
     if (class_exists($resolved, false) || interface_exists($resolved, false) || trait_exists($resolved, false)) {
         return new self($resolved);
     } else {
         if (null === $classloader) {
             return ClassLoader::getDefault()->loadClass($name);
         } else {
             return $classloader->loadClass($name);
         }
     }
 }