+ Antworten
Seite 2 von 4 ErsteErste 1 2 3 4 LetzteLetzte
Ergebnis 11 bis 20 von 36
  1. #11
    Registriert seit
    Aug 2016
    Beiträge
    2,427

    Oh, stimmt, gar nicht drüber nachgedacht.

    Grüße,
    Kai
    IPS 5.1 Ninja, auf Tinkerboard und RPI, piVCCU, Homematic & Homematic IP, diverse Tasmota Geräte, Shelly, GHoma, LG HomBot, Sonos, Tvheadend, HomeKit, AppleTV

  2. #12
    Registriert seit
    Feb 2017
    Beiträge
    1,224

    Du kannst einer verwendeten Klasse einen callback zum Debuggen mitgeben, damit diese darauf zugreifen kann.

  3. #13
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    6,205

    Zitat Zitat von Dr. Niels Beitrag anzeigen
    Du kannst einer verwendeten Klasse einen callback zum Debuggen mitgeben, damit diese darauf zugreifen kann.
    Hast Du mal ein Beispiel wie so was auszusehen hat?

  4. #14
    Registriert seit
    Feb 2017
    Beiträge
    1,224

    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.

  5. #15
    Registriert seit
    Oct 2014
    Beiträge
    554

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Immer dann wenn du zwei oder mehr Instanzen von verschiedenen Modulen in einem Script ansprichst; wo die Traits der verschiedenen Module den gleichen Namen nutzen.
    Michael
    Hallo Zusammen,

    ich muss nochmal etwas nachfragen zu den traits.

    wenn ich in einem Modul einen trait innerhalb eines Moduls include und ein Trait hat z.B. den Namen Notifications .. so wird dieser ja Bestandteil des Moduls.

    Code:
    // Include all files in helper folder
    include_once __DIR__ . '/helper/autoload.php';
    
    class TestModuleOne extends IPSModule
    {
        // Helper
        use Notifications;
    .....
    Wenn ich in einem weiteren Modul das selbe mache...

    Code:
    // Include all files in helper folder
    include_once __DIR__ . '/helper/autoload.php';
    
    class TestModuleTwo extends IPSModule
    {
        // Helper
        use Notifications;
    .....
    im helper Ordner eines jedem Moduls befindet sich die Datei notifications.php mit folgendem Inhalt:

    Code:
    <?php
    
    // Declare
    declare(strict_types=1);
    
    trait Notifications
    {
        //#################### Notifications
      
        public function Notification(string $Text)
        {
           // do something
        }
    }
    tritt dann auch der genannte Fehler auf? Es befindet sich ja alles innerhalb des Moduls.

    Oder tritt dies auf, wenn es nur einen "globalen" Trait Notifications gibt und dieser in beiden Modulen verwendet werden soll?

    Also bei mir geht es primär nicht um Vererbung, sondern soll für mich zu einem übersichtlicheren Code verhelfen.


    Uli

  6. #16
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,771

    Wenn es der gleiche absolute Dateipfad ist, geht das.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  7. #17
    Registriert seit
    Oct 2014
    Beiträge
    554

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Wenn es der gleiche absolute Dateipfad ist, geht das.
    Michael
    Ist es, danke Michael.


    Gesendet von iPhone mit Tapatalk

  8. #18
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,771

    Zitat Zitat von KaiS Beitrag anzeigen
    Wo denn Michael?

    Grüße,
    Kai
    Hier zum Beispiel:
    [Modul] Tasmota - Seite 84
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  9. #19
    Registriert seit
    Aug 2016
    Beiträge
    2,427

    Ja, das habe ich auch gelesen.
    Aber eine Lösung haben wir jetzt noch nicht dafür, oder?

    Grüße,
    Kai
    IPS 5.1 Ninja, auf Tinkerboard und RPI, piVCCU, Homematic & Homematic IP, diverse Tasmota Geräte, Shelly, GHoma, LG HomBot, Sonos, Tvheadend, HomeKit, AppleTV

  10. #20
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,771

    Ich habe durch etwas externen Input (dank an Paresy) jetzt eine Lösung für mich gefunden.
    Ist aber sehr Tricky und man hat schnell einen Knoten im Kopf.
    Überlegung ist alle Traits mit einem Namespace zu nutzen.
    PHP-Code:
    namespace bvip;

    /**
     * DebugHelper ergänzt SendDebug um die Möglichkeit Array und Objekte auszugeben.
     */
    trait DebugHelper
    {
    ... 
    PHP-Code:
    require_once __DIR__ '/../libs/helper/DebugHelper.php';

    class 
    BVIPDiscovery extends IPSModule
    {

        use 
    bvip\DebugHelper,
            
    bvip\BufferHelper
    Da ich aber irgendwann alle gleichen Traits als Submodul für alle meine Module nutzen möchte, sobald der Store dies unterstützt, hat man wieder das gleiche Problem.
    Da dann mehrere Dateien mit den gleichen NS\Trait auf dem Dateisystem liegen.

    Somit muss beim laden der externen Traits ein individueller Namespace benutzt werden.
    PHP-Code:
    /**
     * DebugHelper ergänzt SendDebug um die Möglichkeit Array und Objekte auszugeben.
     */
    trait DebugHelper
    {
    ... 
    PHP-Code:
    eval('namespace bvip {?>' file_get_contents(__DIR__ '/../libs/helper/DebugHelper.php') . '}');
    eval(
    'namespace bvip {?>' file_get_contents(__DIR__ '/../libs/helper/BufferHelper.php') . '}');
    class 
    BVIPDiscovery extends IPSModule
    {

        use 
    bvip\DebugHelper,
            
    bvip\BufferHelper
    Das wird dann noch komplizierter, wenn die Traits irgendwo Klassen benutzen. Dann wird versucht die Klasse mit dem NS zu finden.
    Oder wenn man weitere Vererbung mit anderen Klassen nutzen. Zum Beispiel wenn vier Module (hier sind Module innerhalb einer Library gemeint) die gleiche Code-Basis einer Basisklasse nutzen sollen, welche wiederum Traits nutzen und von ipsmodule erben muss.

    Michael
    Geändert von Nall-chan (13.04.19 um 20:47 Uhr)
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

Ä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