作曲家转储自动加载,问题
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。
【讨论】:
以上是关于作曲家转储自动加载,问题的主要内容,如果未能解决你的问题,请参考以下文章