From 728ebf7b4cdb848c3895ed976e532aebaed7154b Mon Sep 17 00:00:00 2001 From: thinkphp Date: Fri, 2 Feb 2018 18:52:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9Bcomposer=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Loader.php | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/library/think/Loader.php b/library/think/Loader.php index e4130bdb..a54230f4 100644 --- a/library/think/Loader.php +++ b/library/think/Loader.php @@ -284,6 +284,25 @@ class Loader // 注册系统自动加载 spl_autoload_register($autoload ?: 'think\\Loader::autoload', true, true); + // Composer 自动加载支持 + if (is_dir(VENDOR_PATH . 'composer')) { + if (PHP_VERSION_ID >= 50600 && is_file(VENDOR_PATH . 'composer' . DS . 'autoload_static.php')) { + require VENDOR_PATH . 'composer' . DS . 'autoload_static.php'; + + $declaredClass = get_declared_classes(); + $composerClass = array_pop($declaredClass); + + self::$prefixLengthsPsr4 = $composerClass::$prefixLengthsPsr4; + + self::$prefixDirsPsr4 = property_exists($composerClass, 'prefixDirsPsr4') ? $composerClass::$prefixDirsPsr4 : []; + + self::$prefixesPsr0 = property_exists($composerClass, 'prefixesPsr0') ? $composerClass::$prefixesPsr0 : []; + self::$map = property_exists($composerClass, 'classMap') ? $composerClass::$classMap : []; + } else { + self::registerComposerLoader(); + } + } + // 注册命名空间定义 self::addNamespace([ 'think' => LIB_PATH . 'think' . DS, @@ -296,11 +315,6 @@ class Loader self::addClassMap(__include_file(RUNTIME_PATH . 'classmap' . EXT)); } - // Composer 自动加载支持 - if (is_dir(VENDOR_PATH . 'composer')) { - self::registerComposerLoader(); - } - // 自动加载 extend 目录 self::$fallbackDirsPsr4[] = rtrim(EXTEND_PATH, DS); }