作曲家转储自动加载,问题

Posted

技术标签:

【中文标题】作曲家转储自动加载,问题【英文标题】: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 【参考方案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。

【讨论】:

以上是关于作曲家转储自动加载,问题的主要内容,如果未能解决你的问题,请参考以下文章

作曲家转储自动加载无法识别的命令

作曲家 PSR4 奇怪的行为

psr-0 与作曲家自动加载不工作,但它与 psr-4 自动加载完美配合

如何检查是不是正在使用作曲家的自动加载器?

作曲家自动加载器 psr-0 命名空间

如何在 laravel 中要求作曲家自动加载器?