laravel Composer 转储自动加载,问题
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32664271/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Composer dump-autoload, issue
提问by Ande Caleb
While Working on a project using Laravel 4 to be precise, I decided that i wanted to make my own helper file to house my custom functions.. one of which is this below...
准确地说,在使用 Laravel 4 进行项目时,我决定制作自己的帮助文件来容纳我的自定义函数......其中之一是下面的......
function pr($ar=array(), $bool=false){
echo '<pre>';
print_r($ar);
echo '</pre>';
if($bool){
exit;
}
}
in my composer.json file, just after the autoload: classmap , i added myne, autoload:files -arrar and included my custom file, app/helpers as illustrated below..
在我的 composer.json 文件中,就在 autoload: classmap 之后,我添加了 myne, autoload:files -arrar 并包含了我的自定义文件 app/helpers ,如下图所示..
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"others":[
"app/helpers.php"
]
and i switched to my terminal window and ran the following commands
我切换到我的终端窗口并运行以下命令
composer dump-autoload -o
but i still got errors that my pr() function was undefined... then i tried the artisan alternative... [-o ] to optimize the files
但我仍然遇到我的 pr() 函数未定义的错误...然后我尝试了 artisan 替代... [-o ] 来优化文件
php artisan dump-autoload
but still it refused to work... and then i changed the array name from
但它仍然拒绝工作......然后我将数组名称从
"others":[
"app/helpers.php"
]
to
到
"files":[
"app/helpers.php"
]
then i got the desired response, my code could now see the custom function i wrote, please i'd like to know if there is a pattern i was supposed to follow or otherwise, in my case, i mistook " files ", for " others " and i got errors, but incase, what did i miss here, all i see is just a name-string value for the array representation....
然后我得到了所需的响应,我的代码现在可以看到我编写的自定义函数,请我想知道是否有我应该遵循的模式,或者在我的情况下,我误认为“文件”为“其他人”,我遇到了错误,但是,我在这里错过了什么,我看到的只是数组表示的名称字符串值....
采纳答案by Marcin Nabia?ek
This is how composer works. In autoload
section you need to use files
when you want to load some files. In my Laravel 5 project I have for example:
这就是作曲家的工作方式。在您要加载某些文件时autoload
需要使用的files
部分。例如,在我的 Laravel 5 项目中:
"autoload": {
"classmap": [
"database",
"tests/TestCase.php"
],
"psr-4": {
"App\": "app/",
"verify\": "verify/"
},
"files": [
"app/Helpers/functions.php"
]
},
If you look at documentationyou will see that you need to use files
to load any extra files by autoloader.
如果您查看文档,您会发现您需要使用files
自动加载器来加载任何额外的文件。
回答by Zsw
According to the official documentation
根据官方文档
Currently PSR-0 autoloading, PSR-4 autoloading, classmap generation and files includes are supported. PSR-4 is the recommended way though since it offers greater ease of use (no need to regenerate the autoloader when you add classes).
目前支持 PSR-0 自动加载、PSR-4 自动加载、类映射生成和文件包含。PSR-4 是推荐的方式,因为它提供了更大的易用性(添加类时无需重新生成自动加载器)。
So the reason that "others"
did not work was because it is not supported by composer. "others"
is simply meaningless, while "files"
actually have a specific autoloading mechanism.
所以没用的原因"others"
是composer不支持。"others"
根本没有意义,而"files"
实际上有一个特定的自动加载机制。