composer 中自动加载函数为何以php5.6做区分

新手上路,请多包涵

composer中 自动加载函数中 getloader中为何要以php5.6作为区分$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');,这个区分主要区分的什么?

public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }

        spl_autoload_register(array('ComposerAutoloaderInit812e73c32a9b50cd0733a00f38392e8a', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInit812e73c32a9b50cd0733a00f38392e8a', 'loadClassLoader'));

        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
        if ($useStaticLoader) {
            require_once __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInit812e73c32a9b50cd0733a00f38392e8a::getInitializer($loader));
        } else {
            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }

        $loader->setClassMapAuthoritative(true);
        $loader->register(true);

        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInit812e73c32a9b50cd0733a00f38392e8a::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire812e73c32a9b50cd0733a00f38392e8a($fileIdentifier, $file);
        }

        return $loader;
    }
}
阅读 3.8k
1 个回答

区分的两条分支其一是:使用autoload_static进行静态初始化,二是调用核心类接口初始化。静态初始化只支持PHP5.6以上版本并且不支持HHVM虚拟机。所以以php5.6且HHVM_VERSION是否存在作为区分。
参考自:https://laravel-china.org/art...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题