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
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.
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"] ' –
Es war nur ein Beispiel aus einer meiner' composer.json' Dateien. Überprüfen Sie meine aktualisierte Antwort und versuchen Sie es einmal. –
Ich habe genau das gemacht und Laravel produziert diesen Fehler ** Klasse 'MarketplaceWebServiceOrders_Client' nicht gefunden ** –