Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel PSR-4未自动加载类_Php_Laravel_Laravel 4 - Fatal编程技术网

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