+ Antworten
Seite 4 von 4 ErsteErste ... 2 3 4
Ergebnis 31 bis 36 von 36
  1. #31
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    2,281

    Standard SendDebug in Trait oder anderer Klasse nutzten

    Zitat Zitat von Dr. Niels Beitrag anzeigen
    Klar:

    Klasse mit Debug erhält im Konstruktor den Callback:
    PHP-Code:
        public function __construct(callable $sendDebug)
        {
            
    $this->sendDebug $sendDebug;
        } 

    Klasse in module.php instanziieren und dabei den Callback übergeben:
    PHP-Code:
            $this->object = new DebugClass(
                function (
    $Message$Data$Format) {
                    
    $this->SendDebug($Message$Data$Format);
                }
            ); 
    Dann kann innerhalb der DebugClass die Funktion $this->SendDebug wie gewohnt verwendet werden.
    Ich versuche das gerade umzusetzen, bekomme aber immer eine Fehlermeldung:

    PHP-Code:
    class DebugClass
    {

        public function 
    __construct(callable $sendDebug)
        {
            
    $this->sendDebug $sendDebug;
        }

        public function 
    DoIt()
        {
            
    $this->sendDebug('message''data'KL_DEBUG);
        }
    }


    // in der aufrufenden Klasse steht:

    $MyObject = new DebugClass(
        function(
    $Message$Data$Format) {
            
    $this->SendDebug($Message$Data$Format);
        }
    );
    $MyObject->DoIt(); 
    liefert die Fehlermeldung

    Code:
    Abort Processing during Fatal-Error: Uncaught Error: Call to undefined method DebugClass::sendDebug() in C:\IP-Symcon\modules\iCal-Calendar\iCalCalendarReader\module.php:28
    Stack trace:
    #0 C:\IP-Symcon\modules\iCal-Calendar\iCalCalendarReader\module.php(772): DebugClass->DoIt()
    Ich finde meinen Fehler einfach nicht . Irgendetwas scheint noch zu fehlen. Kann mir da jemand helfen?
    Geändert von bumaas (21.05.19 um 06:42 Uhr)
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.3 Beta

  2. #32
    Registriert seit
    Feb 2017
    Beiträge
    1,415

    Ist $this auch ein IPSModule? Denn sonst hat es ja die Funktion SendDebug nicht.

  3. #33
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    2,281

    ja, ist es.

    Aber ich habe es herausgefunden. Es muss

    PHP-Code:
            call_user_func($this->sendDebug'message''data'0); 
    heißen. Dann geht es.
    Geändert von bumaas (21.05.19 um 14:30 Uhr)
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.3 Beta

  4. #34
    Registriert seit
    Feb 2017
    Beiträge
    1,415

    Das Konstrukt sollte so nicht notwendig sein, ich benutze es auch in meinen Modulen nicht. Was eventuell noch fehlt ist das Initialisieren von sendDebug auf Klassenebene, also z.B.

    PHP-Code:
    class DebugClass
    {
        private 
    $sendDebug null// <--- Neu

        
    public function __construct(callable $sendDebug)
        {
            
    $this->sendDebug $sendDebug;
        }

        public function 
    DoIt()
        {
            
    $this->sendDebug('message''data'KL_DEBUG);
        }

    Das würde auch zur Fehlermeldung passen.

  5. #35
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    2,281

    Nein, daran liegt es nicht.

    Auch ein
    PHP-Code:
    echo (int) is_callable($this->sendDebug); 
    liefert eine 1

    Also kann es eigentlich nur an der Art des Aufrufs liegen.

    Seltsam, dass es bei dir auf diese Art geht und bei mir nicht.
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.3 Beta

  6. #36
    Registriert seit
    Feb 2017
    Beiträge
    1,415

    Komisch, schau dir aber sonst gerne an, wie ich das beim GoogleAssistant und Alexa umgesetzt habe. Du findest die Einbindung in module.php und registry.php in beiden Modulen.

Ähnliche Themen

  1. SendDebug - Warum sehe ich keine Meldungen???
    Von Coyote im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 3
    Letzter Beitrag: 12.02.19, 18:46
  2. SendDebug - Warum sehe ich keine Meldungen???
    Von Coyote im Forum PHP-Module
    Antworten: 3
    Letzter Beitrag: 12.02.19, 18:46
  3. Aggregated Values in anderer Reihenfolge
    Von Flobo im Forum Skripte, PHP, SQL
    Antworten: 4
    Letzter Beitrag: 26.01.14, 15:13
  4. FHT80B/FHT80TF-2 Fensterkontakt /Batterie leer oder nicht? Anderer Fehler?
    Von magic7517 im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 0
    Letzter Beitrag: 16.12.11, 07:43
  5. Anderer IPS Variablentyp gebraucht...
    Von Hinti im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 11
    Letzter Beitrag: 25.02.09, 17:21

Stichworte