Update 3.7.5 auf 3.8.0 > Keine Funktionsdeklaration möglich

  • Hallo zusammen,


    ich hab ein großes Problem mit dem Update von 3.7.5 auf 3.8.0.


    Ich verwende seit Jahren das DirectPHP Modul und durch das update von 3.7.5 auf 3.8.0 funktioniert nichtsmehr.


    Die Analysen haben ergeben:


    wenn ich in einem Beitrag <?php echo "test"; ?> verwende ist alles inordnung. Wenn ich:


    <?php
    function test2(){
    echo "test2";
    }


    echo "test";
    test2();
    ?>


    dann wird nichtmal test ausgegeben. sobald ich iwo eine Funtion deklariere geht nichtsmehr...


    Kann mir bitte einer helfen? Bin sehr verzweifelt.


    Viele Grüße

  • Fehler berichten aktivieren:

    Zitat

    Fatal error: Cannot redeclare test2() (previously declared in
    plugins/content/DirectPHP/DirectPHP.php(58)
    : eval()'d code:2) in plugins/content/DirectPHP/DirectPHP.php(58) : eval()'d code on line 3


    Sourcerer hat übrigens das selbe Problem.


    Ich denke, dass das Plugin-Event onContentPrepare() doppelt aufgerufen wird (ja, wird es tatsächlich) und die Plugins da keinen "Schutz" für haben, "dass sie schon durch sind".


    Musst dich wohl an den Support der Erweiterungen wenden. Vielleicht ja auch ein Joomla-Bug, dass die Plugins doppelt durchlaufen werden.

  • Okay dann werde ich mich mit dem Hersteller von DirectPHP in verbindung setzen.


    Kann ich bis dorthin das Ganze irgendwie umgehen?


    EDIT:
    Mein Workarround:


    if (!function_exists('test2')) {
    function test2() { echo "test2";}
    }
    test2();

  • Jetzt, wo du's sagst, meine ich ja fast, dass das schon immer die richtige Vorgehensweise war. Ist aber Ewigkeiten her, dass ich damit gearbeitet habe. Wenn man bspw. in einem Blog-View ist und mehrere Artikel mit der selben Funktion bestückt, hat man den Fehler automatisch ohne function_exists.

  • Es ist wohl bekannt, dass "neuerdings"(?) Plugins ggf. teils doppelt durchlaufen werden. Gestern nur in einem Nebensatz auf GitHub aufgeschnappt. Da das aber als "grundlegend nicht per se schlecht, weil..." bezeichnet wurde, denke ich, die Programmierer der Plugins werden nacharbeiten müssen. Eine Prüfung, ob in diesem oder jenem Kontext schon etwas passiert ist.


    Vielleicht finden die aber diesbzgl. auch einen Joomla-Bug. Wär ja auch nicht schlecht ;)