2014-04-04 73 views
0

我正在使用的應用程序目錄中的自定義文件夾包含計費,異常,庫等。這裏是我的目錄結構...Laravel PSR-4不加載類自動

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/StripeBilling.php (location) 

<?php namespace iw\Billing; 

class StripeBilling { 

    public function bill() 
    { 
     dd('billing'); 
    } 

} 

我收到類沒有發現錯誤,甚至我注意到,vendor/composer/autoload_ps4.php是不是跟這個新的文件夾更新。請幫忙。感謝

+0

阱結構看都正確,作曲家給出0錯誤?出於好奇'''「psr-4」''聲明在自動加載樹中?試圖做一個作曲家自我更新? – arma

+0

@arma是作曲家給出0錯誤。我試着作曲家自我更新 – seoppc

+0

只是做了相同的測試,它爲我工作正常。 – arma

回答

0

我想這個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" }後工作。

+0

因爲這是自動加載?它爲您的php自動加載器添加了映射。 https://getcomposer.org/doc/04-schema.md#autoload – arma

+0

謝謝@arma偉大的幫助,還有一件事,我已經把iw文件夾中的自定義macros.php(用於coutry select字段),但我越來越這個錯誤...'方法selectCountry不存在',它如果我把它放在app /中,並在global.php中引用它,但不從自動加載器加載,或者我缺少一些東西。 – seoppc

+0

偉大的它爲你工作,關於宏,是的你不能直接從作曲家加載他們(以及我相信有人可以做到這一點,但它不會很漂亮),因爲它將被加載FORM或HTML外觀之前。你所能做的就是將它們加載到你的start.php或global.php中。 – arma

2

在「classmap」中添加「app/iw」。

"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 
+2

是不是psr-4避免'classmap'更改的要點? – JustAMartin