Php Laravel PSR-4未自动加载类
我在应用程序目录中使用一个自定义文件夹,其中包含账单、异常、存储库等。这是我的目录结构Php Laravel PSR-4未自动加载类,php,laravel,laravel-4,Php,Laravel,Laravel 4,我在应用程序目录中使用一个自定义文件夹,其中包含账单、异常、存储库等。这是我的目录结构 app -iw -Billing -BillingInterface.php -StripeBilling.php -Exceptions -Repositories -macros.php composer.json "psr-4": { "iw\\" : "app/iw" }, 运行命令compos
app
-iw
-Billing
-BillingInterface.php
-StripeBilling.php
-Exceptions
-Repositories
-macros.php
composer.json
"psr-4": {
"iw\\" : "app/iw"
},
运行命令composer dump autoload-o
班级
// app/iw/BillingInterface.php (location)
<?php namespace iw\Billing;
interface BillingInterface {}
//app/iw/BillingInterface.php(位置)
我尝试了这个json文件,它成功了
"autoload": {
"psr-4": {"iw\\" : "app/iw" },
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
}
但请说明为什么在添加了“psr-4”之后它会起作用:{“iw\\”:“app/iw”}
在自动加载部分。在“类地图”中添加“app/iw”
跑
composer dump-autoload -o
嗯,结构看起来都正确,作曲家给出了0个错误?出于好奇
“psr-4”
声明是否在自动加载树中?是否尝试进行作曲家自我更新?@arma yes composer给出0个错误。我尝试了composer self Update,但做了相同的测试,效果和我预期的一样。@arma你知道它刚刚起了什么作用,但你必须告诉我“为什么”。。。我在发布答案…因为那是autoload做的?它为php自动加载程序添加映射。感谢@arma提供的巨大帮助,还有一件事,我已经将custom macros.php(用于coutry select字段)放在iw文件夹中,但我收到了这个错误方法selectCountry不存在
,如果我把它放在app/中,并在global.php中引用它,但不是从autoloader加载,或者我遗漏了什么。很好,它对你有用,关于宏,是的,你不能直接从composer加载它们(我相信有人可以这样做,但不会很漂亮)因为它将在表单或HTML外观之前加载。您所能做的就是将它们加载到start.php或global.php中。
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/iw"
],
"psr-4" : {
"iw\\" : "app/iw"
}
}
composer dump-autoload -o