Ankündigung

Einklappen
Keine Ankündigung bisher.

Globale php functions

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Globale php functions

    Spricht etwas dagegen, dass ich meine privaten globalen php Functions und Variablen in einen speziellen LBS reingebe?
    Oder gibt es dafür einen besseren Platz?

    Ich dachte so in der Art:
    Code:
    ###[DEF]###
    [name = MyGlobalLBS ]
    ###[/DEF]###
    
    ###[LBS]###
    <?
    $GlobalVar1 = 1;
    $GlobalVar1 = 2;
    
    global_function_init();
    
    function global_function_init() {
      $GlobalVar1 = 2;
    }
    ?>
    ###[/LBS]###

    #2
    Mein Verständnis war, dass alle Funktionen im LBS Bereich mit "LB_LBSID_" starten müssen. Dies wird dann beim Parsen der LBS ersetzt durch die eigentliche ID des LBS. Ansonsten würde es zu Redeclaration Fehlern kommen, insbesondere wenn man den LBS mehrfach einfügen würde. Ob es funktioniert, dass man auch Functions ohne dieses Prefix deklarieren kann, musst du ausprobieren. Empfehlen würde ich es aber grundsätzlich nicht, wenn andere das in ihren LBS auch machen, dann gibts ganz schnell ein ziemliches Durcheinander. Für die EXEC Bereiche kann es natürlich Sinn machen. Dort würde ich es aber in einem separaten PHP File machen und dies dann zu Beginn des EXEC Teils includen.

    Kommentar


      #3
      Ja klar - den globalen LBS darf man nur 1x verwenden und meine eigenen privaten Funktionen werden sowieso nie im download Bereich landen.

      Das mit den EXEC Bereichen hab ich noch nicht vollständig verstanden, wann die eigentlich "geladen" werden. Werden die EXEC Bereiche nur 1x inkludiert, selbst wenn der LBS mehrfach verwendet wird? Was ist dann mit globalen Variablen, welche ich von mehreren EXEC Bereichen zugreifen will? edomi läuft ja single-threaded, oder?

      Kommentar


        #4
        EXEC-Teile laufen als eigenstaendige PHP-Prozesse, wenn Du da IPC brauchst, musste das selber realisieren.

        Kommentar


          #5
          Zitat von wintermute Beitrag anzeigen
          EXEC-Teile laufen als eigenstaendige PHP-Prozesse, wenn Du da IPC brauchst, musste das selber realisieren.
          Danke für die Aufklärung - alles klar.

          Kommentar


            #6
            "Normale" LBSe werden einfach in den Logik-Prozess inkludiert, daher darf ein Funktionsname natürlich nicht doppelt vorkommen. Intern wird der Platzhalter LB_LBSID daher durch die Instanz(!)-ID des LBS ersetzt.

            Bei EXEC-LBSen ist dies nicht notwendig, da jede Instanz eines solchen LBS (bzw. dessen EXEC-Teils) als eigenständiger PHP-Prozess ausgeführt wird. Der Aufruf geschieht in der Form exec(...) in PHP. Bei der "Installation" eines solchen LBS wird der EXEC-Teil als gesonderte PHP-Datei abgespeichert - der normale LBS-Teil wird jedoch wie oben inkludiert.
            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

            Kommentar

            Lädt...
            X