Modul Namespace Class not found

  • Moin moin,

    ich habe eines meiner Module für J4 und zeitgleich auf Namespace geändert. Unter "4.0.0-beta7" funktioniert das ohne Probleme. Jetzt wollte ich es unter "3.9.26" installieren und hier kommt die Fehlermeldung, dass er die Klasse in meiner Helper Datei nicht findet.


    0 Class 'ITCS\Module\ItcsOpenHoursPro\Site\ItcsOpenHoursProHelper' not found

    W:\xampp\htdocs\www\test.it-conserv.de\modules\mod_itcs_openhours_pro\mod_itcs_openhours_pro.php:93


    Der Aufruf in der "mod_itcs_openhours_pro.php" Zeile 93

    PHP
    //Zeile 19
    use ITCS\Module\ItcsOpenHoursPro\Site\ItcsOpenHoursProHelper;
    
    //Zeile 93
    $weekdays  = ItcsOpenHoursProHelper::weekdays($open_days, $week_start, $tz);


    Datei: ItcsOpenHoursProHelper.php befindet sich direkt im Modul auf der gleichen Ebene wie die "mod_itcs_openhours_pro.php"


    Muss ich für J3.9 noch was angeben?
    Habe ich was vergessen?

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Wahrscheinlich musst in Joomla 3 den Namespace händisch registrieren. In diesem Administrator-Modul muss ich hier (https://github.com/GHSVS-de/mo…istratorlinkghsvs.php#L13) innerhalb einer Joomla-3-Weiche einfügen

    Code
    JLoader::registerNamespace('Joomla\\Module\\AdministratorLinkGhsvs\\Administrator', __DIR__ . '/src', false, false, 'psr4');

    Denke mal, weil die Auto-Registrierung durch <namespace>-Tag in J3 nicht implementiert ist.


    https://github.com/GHSVS-de/mo…istratorlinkghsvs.xml#L28


    (Bei mir liegt der Helper in /src/Helper/).

  • Wahrscheinlich musst in Joomla 3 den Namespace händisch registrieren

    Das kann natürlich möglich sein. Ich dachte nur, dass es in 3.9.x bereits implementiert ist. Irgendwo hatte ich auch mal was gesehen, dass die Namespaces eingetragen werden. Nur habe ich noch nicht rausgefunden, wo die eingetragen werden. Sonst könnte man dort ja mal nachschauen. ;)

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Wäremir neu, dass man die Namespaces in Joomla 3 irgendwo selbst einträgt für eigene Erweiterungen.


    In Joomla 4 werden die halt automatisch von hier und da zusammengesammelt und dann per autoloader-Funktionalitäten bekannt gemacht.


    Mein obiges Joomla-4-Module findet sich z.B. in JCACHE/autoload_psr4.php durch den <namespace>-Tag im Manifest-XML. Diese autoload_psr4-Datei wird dynamisch erstellt vom Plugin "Extension - Namespace Updater".

  • habe es nun getestet und tatsächlich, das manuelle registrieren ist notwendig.

    Danach klappt es auch unter J3


    Vielen Dank für den Tipp ;)

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.