2017-04-20 64 views
0

我與此composer.json由laravel包:類laravel包的

{ 
    "name": "calcanotica/file-storage", 
    "type": "library", 
    "description": "A file storage module for laravel.", 
    "homepage": "<<gitlab url>>", 
    "authors": [ 
     { 
      <<authors>> 
     } 
    ], 
    "autoload": { 
     "psr-4": { "Calcanotica": "src" } 
    }, 
    "require": { 
     "php": "^5.5.9 || ^7.0", 
     "illuminate/contracts": "5.1.* || 5.2.* || 5.3.* || 5.4.*", 
     "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.*", 
     "league/flysystem-aws-s3-v3": "~1.0", 
     "nesbot/carbon": "^1.0" 
    } 
} 

包的結構是:

-src 
    -Storage 
     -S3FileStorage.php 

S3FileStorage.php文件I有下面的類:

namespace Calcanotica\Storage; 

class S3FileStorage { ... } 

但是,當我嘗試使用另一個應用程序中的類作爲\Calcanotica\Storage\S3FileStorage,我得到一個Class \Calcanotica\Storage\S3FileStorage not found錯誤。我已經執行composer dump-autoload

有什麼問題?

+1

備註:大部分'require'條目都沒有意義。請閱讀https://getcomposer.org/doc/articles/versions.md –

+0

謝謝@MarcinOrlowski我會檢查它。 – Cabezota

回答

2

您的autoload部分是不正確的。命名空間必須\\docs)結尾因此它應該是:

"autoload": { 
    "psr-4": { "Calcanotica\\": "src" } 
}, 

但是我會跟

"autoload": { 
    "classmap": [ "src/" ] 
}, 

更換整個

"autoload": { 
    "psr-4": { "Calcanotica": "src" } 
}, 

,讓作曲家弄清楚什麼是哪裏(docs),它通常使用比手動設置名稱空間映射更好,更不容易出錯,並且如果添加新的命名空間到你的包。

+0

工作正常!謝謝。你能簡單地解釋一下爲什麼它不起作用,現在呢?或指向一個參考... – Cabezota

+0

@Cabezota檢查在這裏:https://getcomposer.org/doc/04-schema.md#psr-4 –

+0

我編輯答案,檢查出來。 –

0

在你composer.json文件中添加以下行:

"autoload": { 
    "psr-4": { 
     "Calcanotica\\": "src/" 
    }, 

}, 

你需要你的src後您的命名空間和/後添加\\。欲瞭解更多檢查:https://getcomposer.org/doc/04-schema.md#psr-4