laravel5.5 自定义global helper function && 背后的加载机制

场景
. 项目总会遇到自定义全局函数的需要,下面就看看它的工作机制
分析
  • composer 提供了4种autoload加载的模式 (下面是laravel5.5 composer.json)
    • classmap
      • 读取对应的目录下面的所有文件,
      • .在vendor/composer/autoload_classmap.php 中组装 (key value)NameSpace + ClassName => ‘文件路径’,
      • vendor/composer/autoload_real.php 中 ,加载
        $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            } 
  • psr-4
    • 1见下面的列子, 将App\ 命名空间 映射到app/目录`
    • 如果是有多层结构,就依次往下深入
  • files
    • 下面的例子,将下面的文件 require到全局的变量中
    • vendor/composer/autoload_real.php 文件
        # 加载files文件
        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInit64f60075ed58f423d7ab93ac7aa330e5::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire64f60075ed58f423d7ab93ac7aa330e5($fileIdentifier, $file);
        }
    autoload 加载的模式
    "autoload": {
        "files" : [
            "app/Support/helpers.php"
        ],
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

参考文档

  • https://laravel-china.org/topics/1002/deep-composer-autoload

解决

  • 在app目录下建立一个文件 app/Support/helpers.php
  • 在composer.json autoload选项中 添加
        "files" : [
            "app/Support/helpers.php"
        ],
  • 执行 composer dump-autodump 这个命令会将 app/Support/helpers.php加载到vendor/composer/autoload_files.php文件中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值