鍍金池/ 問(wèn)答/PHP/ composer 中自動(dòng)加載函數(shù)為何以php5.6做區(qū)分

composer 中自動(dòng)加載函數(shù)為何以php5.6做區(qū)分

composer中 自動(dòng)加載函數(shù)中 getloader中為何要以php5.6作為區(qū)分$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');,這個(gè)區(qū)分主要區(qū)分的什么?

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;
    }
}
回答
編輯回答
不將就

區(qū)分的兩條分支其一是:使用autoload_static進(jìn)行靜態(tài)初始化,二是調(diào)用核心類接口初始化。靜態(tài)初始化只支持PHP5.6以上版本并且不支持HHVM虛擬機(jī)。所以以php5.6且HHVM_VERSION是否存在作為區(qū)分。
參考自:https://laravel-china.org/art...

2018年6月29日 14:18