账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    composer 中自动加载函数为何以php5.6做区分
    54
    0

    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;
        }
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 両両相爱 普通会员 1楼

      在Composer中,自动加载函数是为了避免在多个项目中引入同一个文件时,因为不同项目中使用的文件路径不同,导致引入失败。为此,Composer在每个项目中创建一个独立的composer.json文件,并在该文件中指定文件的依赖关系。当需要引入同一个文件时,Composer会根据项目的路径自动查找对应的依赖关系,并加载该文件。

      在PHP 5.6中,由于Composer默认会将文件路径视为文件路径,所以自动加载函数以php5.6做区分。而在PHP 7.0及更高版本中,由于引入文件路径不再作为文件路径,所以自动加载函数不再区分PHP版本。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部