Wie am besten einen eigenen Autoloader registrieren?

Ich habe ein Plugin, dessen Klassen nicht dem PSR-4-Schema VendorPlugin* folgen. Dafür brauche ich einen angepassten Autoloader (Composer in meinem Fall).

Im Moment wird beim allerersten Event Enlight_Bootstrap_AfterRegisterResource_kernel die autoload.php eingebunden.

Auszug Resources/services.xml:

Loader.php:

Ein Nachteil ist, dass kein weiterer Service auf diesem Event lauschen kann, weil die load()-Methode noch nicht ausgeführt wurde (Class ‚Bla\Blub‘ not found). Auch eine höhere Priorität des load()-Listeners nützt hier nichts.

Gibt es eine Möglichkeit den Autoloader noch früher zu registrieren?

Du kannst es über deiner Bootstrap Datei requiren siehe dazu https://github.com/shyim/shopware-profiler/blob/master/ShyimProfiler.php#L18 als Beispiel.

Der Nachteil, deine Klassen werden auch geladen wenn dein Plugin nicht aktiv ist. Ich hab vor längeren ein PR dazu erstellt (Added new plugin method registerAutoloader for composer dependencies by shyim · Pull Request #1155 · shopware/shopware · GitHub) wird wahrscheinlich 2019 gemergt :kappa: 

1 „Gefällt mir“