2017-04-20 4 views
0

ich ein Laravel Paket mit diesem composer.json gemacht:Klasse Laravel Paket nicht gefunden

{ 
    "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" 
    } 
} 

Die Struktur des Pakets ist:

-src 
    -Storage 
     -S3FileStorage.php 

In der S3FileStorage.php Datei, die ich die folgende Klasse haben:

namespace Calcanotica\Storage; 

class S3FileStorage { ... } 

Aber wenn ich versuche, die Klasse in einer anderen Anwendung als 01 zu verwenden, bekomme ich einen Class \Calcanotica\Storage\S3FileStorage not found Fehler.

Ich führe bereits composer dump-autoload.

Was ist das Problem?

+1

Randnotiz: Die meisten Ihrer 'require' Einträge machen keinen Sinn. Bitte lesen Sie https://getcomposer.org/doc/articles/versions.md –

+0

danke @MarcinOrlowski Ich würde es überprüfen. – Cabezota

Antwort

2

Ihr autoload Abschnitt ist falsch. Namespace muss mit \\ (docs) enden, so sollte es sein:

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

aber ich würde ersetzen die ganze

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

mit

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

und lassen Komponist herauszufinden, was ist, wo (docs), die im Allgemeinen besser ist, weniger fehleranfällig als das Einrichten von Namespace-Mapping von Hand und keine zukünftige Aufmerksamkeit benötigen, wenn Sie hinzufügen neuer Namespace zu Ihrem Paket

+0

Das hat funktioniert! Vielen Dank. Kannst du kurz erklären, warum es nicht funktioniert hat und jetzt? oder zeigen Sie auf eine Referenz ... – Cabezota

+0

@Cabezota Überprüfen Sie hier: https://getcomposer.org/doc/04-schema.md#psr-4 –

+0

Ich bearbeitet die Antwort, überprüfen Sie es. –

0

In Ihrem composer.json Datei Add folgenden Zeilen:

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

}, 

Sie benötigen \\ nach Ihrem Namensraum und / nach Ihrem src hinzuzufügen. Weitere Informationen finden Sie hier: https://getcomposer.org/doc/04-schema.md#psr-4

Verwandte Themen