composer package innerhalb plugin verwenden

Ich versuche gerade ein composer package innerhalb eines Plugins zu verwenden - Als base nutze ich das sample subscriber plugin: https://github.com/shopware/swag-docs-subscriber-plugin

Zu allererst musste ich in der composer.json "shopware/core": "*"  entfernen. Ansonsten hat composer install die gesamten Shopware vendor files logischerweise geladen - Die werden ja gar nicht benötigt, odre? Zumindest erschließt sich mir der Sinn nicht. Aber auch wenn ich es drinn lasse - Selbige Problem.

Nachdem ich es entfernt habe und mein package required habe wurden auch nur die benötigten Dateien gezogen.

Jetzt habe ich allerdings das Problem mit dem Namespace - In der subscriber class kann die er die package class nicht finden vom package. Bekomme nur den Fehler “Did you forget a “use” statement for another namespace?”. Habe die class ganz normal über PHPStorm Autovervollständigung importiert. Aber er findet diese nicht.

Ich vermute einmal es hängt mit dem psr-4 autoload zusammen? Hat jemand einen Tipp?

Habe auch scho versucht in der composer.json “Swag\SubscriberPlugin\” raus zu hauen, danach ein dump-autoload allerdings ohne Erfolg.

"psr-4": {
  "": "src/"
},

 

Hallo,

ich stand vor demselben Problem und hatte die Frage ebenfalls gestellt im Gitter Chat. Aktuell muss wohl für das require / install kurz die Shopware Core Abhängigkeit gelöscht und hinterher wieder eingefügt werden.

Die Einbindung von der autoload.php sieht man beispielsweise hier: FroshDevelopmentHelper/FroshDevelopmentHelper.php at master · FriendsOfShopware/FroshDevelopmentHelper · GitHub

 

MFG

derwunner

Verstehe ich da etwas falsch - warum genau sollte man die composer.json im Hauptordner verwenden? Ein Plugin sollte ja seine eigenen Abhängigkeiten definieren und daher auch eine eigene composer.json haben. In dieser kann man dann zB. den PSR-4 - Autoloader definieren. Klappt zumindest bei mir recht gut derzeit:

 

{
    "require": {
        "shopbase/shopware-client": "^1.0"
    },
    "autoload": {
        "psr-4": {
            "ERP\\EDCSDK\\": "lib/edcsdk/src/"
        }
    }
}