Da holt mich einfach mein lückenhaftes Verständnis von composer und autoloader ein.
Damit ich das mal richtig verstehe: In der composer.json mache ich unter autoload die Namensräume bekannt, damit PHP weiß, wovon ich spreche, wenn ich bestimmte Klassen lade, richtig?
Das sagt dem autoloader, dass der Namensraum hier beginnt und mit z.B. “Application/Model/…” fortgesetzt werden kann.
In dem o.g. Modul funktioniert das so auch. Nun habe ich das auch für das fehlerhafte searchoxid so angepasst - weiterhin gleicher Fehler (…“ungültige Module erkannt.”).
Dann habe ich den Pfad vom vendor-Verzeichnis aus eingetragen, also mit ../../../source/modules/pflaesterer/searchoxid - auch hier wieder der Fehler.
Was verstehe ich denn da falsch? Und wird denn nirgendwo geloggt, warum er beim Aktivieren auf die Nase fällt?
Okay, also irgendein namespace-fuckup muss es gewesen sein: In der composer.lock im Stammverzeichnis war - egal, was ich anstellte - immer der falsche Pfad im Autoload "./source/modules/pflaesterer/searchoxid".
Da habe ich im Repo die composer.json angepasst und einen neuen Release erstellt:
Modul mit composer remove entfernt und mit composer require frisch gezogen - Bumm, es geht.
Irgendwo habe ich mich wohl verzettelt. Danke für die Hilfe und die Tipps, das hat mir sehr geholfen!
Ja composer läuft da oft noch nicht so recht rund.
Übrigens, bei dem Pfad “.” oder “./” werden deine PHP Klassen nicht aus dem Modul-Verzeichnis geladen sondern von dem Ort, wo die Quelle liegt (also bei einem lokalen Repo dort, sonst im Vendor). Die ganzen OXID-Spezifischen weiteren Dateien aber aus dem modul-Verzeichnis source/modules/…
Das ist nicht wirklich schlimm. Sollte man aber im Hinterkopf haben, wenn man auf einem Testsystem entwickelt. Dann muss man die angepassten Dateien an der richtigen Stelle ablegen. Damit spart man sich dann häufiges und zeitraubendes composer update und Dateien im modules Verzeichnis überschreiben…
Danke für den Hinweis. Ist eigentlich alles recht logisch, wenn ich so darüber nachdenke. Aber dadurch, dass ich mich eigentlich immer nur alle paar Wochen mit dem Code in OXID befassen muss, bin ich da hin und wieder nicht so trittsicher, wie ich es gerne wäre.