【问题标题】:Composer dump-autoload, issue作曲家转储自动加载,问题
【发布时间】:2015-12-16 07:49:50
【问题描述】:

确切地说,在使用 Laravel 4 进行项目时,我决定制作自己的帮助文件来容纳我的自定义函数。下面是其中之一...

function pr($ar=array(), $bool=false){

   echo '<pre>';
   print_r($ar);
   echo '</pre>';

   if($bool){
      exit;
   }

}

在我的 composer.json 文件中,就在 autoload: classmap 之后,我添加了 myne, autoload:files -arrar 并包含了我的自定义文件 app/helpers,如下图所示..

            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ],

        "others":[
            "app/helpers.php"
        ]

然后我切换到我的终端窗口并运行以下命令

composer dump-autoload -o  

但我仍然收到我的 pr() 函数未定义的错误...然后我尝试了工匠替代方法... [-o] 来优化文件

php artisan dump-autoload

但它仍然拒绝工作......然后我从

更改了数组名称
"others":[
            "app/helpers.php"
        ]

"files":[
            "app/helpers.php"
        ]

然后我得到了所需的响应,我的代码现在可以看到我编写的自定义函数,我想知道是否有我应该遵循的模式,或者在我的情况下,我误认为“文件” ,对于“其他人”,我得到了错误,但万一,我在这里错过了什么,我所看到的只是数组表示的名称字符串值......

【问题讨论】:

  • 如果有人想知道,我更喜欢我的 pr() 函数而不是原生的 dd() - die dump 函数......它很适合我......我只是做我自己,#period

标签: php laravel composer-php helpers laravel-artisan


【解决方案1】:

这就是作曲家的工作方式。在autoload 部分,当你想加载一些文件时,你需要使用files。在我的 Laravel 5 项目中,例如:

"autoload": {
    "classmap": [
        "database",
        "tests/TestCase.php"
    ],
    "psr-4": {
        "App\\": "app/",
        "verify\\": "verify/"
    },
    "files": [
        "app/Helpers/functions.php"
    ]
},

如果您查看documentation,您会发现您需要使用files 来通过自动加载器加载任何额外的文件。

【讨论】:

    【解决方案2】:

    根据official documentation

    目前 PSR-0 自动加载、PSR-4 自动加载、类映射生成 并且支持文件包含。 PSR-4 是推荐的方式 因为它提供了更大的易用性(无需重新生成 添加类时自动加载器)。

    所以"others" 不起作用的原因是因为它不受作曲家的支持。 "others" 毫无意义,而"files" 实际上有一个specific autoloading mechanism

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 2013-12-16
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多