2016-08-04 38 views
4

Amazons MWS PHP-Client-Bibliothek ist nur eine Zip-Datei ohne Namespace. Gibt es eine Möglichkeit, diese Bibliothek mit Laravel-Anwendung oder mit jeder Anwendung, die Composer für seine Abhängigkeitsverwaltung verwendet.Composer Load-Klasse ohne Namespace

Antwort

1

Sicher, erstellen Sie einfach Ihr eigenes Bibliotheksverzeichnis in Ihrer Laravel App. Normalerweise halte ich meins nur innerhalb app Verzeichnis und nenne es Libraries. Dump die Quelldateien in einem Ordner wie AmazonMWS.

.config.inc.php wird mit einem Autoloader geliefert, wird aber nicht verwendet. Stattdessen könnten Sie wahrscheinlich einfach Ihre composer.json in Ihrem Laravel-Projekt öffnen und sie anweisen, Ihr neues Bibliotheksverzeichnis, das auf die Konfiguration abzielt, automatisch zu laden. Ex:

"autoload-dev": { 
    "classmap": [ 
     "app/Libraries/AmazonMWS/Client.php" 
    ] 
} 

Stellen Sie sicher, config.inc.php am AmazonMWS root zugänglich ist.

Anschließend composer dump-autoload ausführen, um die Autoloader neu zu generieren. Wenn es richtig gemacht wird, sollten Sie in der Lage sein, irgendeine der MWS-Klassen ohne einen Namensraum zu instanziieren.

in Ihrem Controller, gehören die folgenden use:

use \MarketplaceWebServiceProducts_Client; 

Jetzt können Sie Ihren Service anrufen, wie erwartet:

$config = [...]; 

$service = new MarketplaceWebServiceProducts_Client(
    AWS_ACCESS_KEY_ID, 
    AWS_SECRET_ACCESS_KEY, 
    APPLICATION_NAME, 
    APPLICATION_VERSION, 
    $config); 

Oder einfach weglassen use \MarketplaceWebServiceProducts_Client; und direkt mit Namespacepräfix, Ihre Wahl instanziiert.

+0

Ich habe Amazon Klassen innerhalb 'app \ Bibliotheken \ AmazonMWS' Und aktualisiert composer.json mit folgenden: ' "Autoload": { "classmap": [ "Datenbank" ], "bA-4" : { "App \\": "app /" }, \t \t "Dateien": [ \t \t \t "app/Bibliotheken/AmazonMWS" \t \t] \t} ' Und ich laufe auch' Komponist dump-autoload' aber wenn Ich begann den Server seine geben Fehler _Failed Eröffnung erfordern 'app/libraries/amazonmws' in c: \ ... \ autoload_real.php_ Warum fügen wir diese Zeile? '" classmap: ["database"] ' –

+0

Es war nur ein Beispiel aus einer meiner' composer.json' Dateien. Überprüfen Sie meine aktualisierte Antwort und versuchen Sie es einmal. –

+0

Ich habe genau das gemacht und Laravel produziert diesen Fehler ** Klasse 'MarketplaceWebServiceOrders_Client' nicht gefunden ** –