+ Antworten
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 12 von 12
  1. #11
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,769

    Ich nutze für die Buffer __get und __set.
    Aktuell auch 'etwas' böse, da theoretisch diese 'Eigenschaften' der Instanz public sind.
    In diesen magischen Methoden wird beim setzen geprüft ob die Länge größer 8000 Byte sind und dann ein weiterer benutzt.
    Die eventuelle negative Differenz an Buffern werden geleert.

    Die Unterscheidung ob es ein einzelner oder eine Gruppe von Buffern sind, mache ich am Namen fest.
    Alles was mit Multi_ beginnt sind ein Array von Buffer.

    PHP-Code:
    /**
     * Trait welcher Objekt-Eigenschaften in den Instance-Buffer schreiben und lesen kann.
     */
    trait BufferHelper
    {

        
    /**
         * Wert einer Eigenschaft aus den InstanceBuffer lesen.
         * 
         * @access public
         * @param string $name Propertyname
         * @return mixed Value of Name
         */
        
    public function __get($name)
        {
            if (
    strpos($name'Multi_') === 0)
            {
                
    $Lines "";
                foreach (
    $this->{"BufferListe_" $name} as $BufferIndex)
                {
                    
    $Lines .= $this->{'Part_' $name $BufferIndex};
                }
                return 
    unserialize($Lines);
            }
            return 
    unserialize($this->GetBuffer($name));
        }

        
    /**
         * Wert einer Eigenschaft in den InstanceBuffer schreiben.
         * 
         * @access public
         * @param string $name Propertyname
         * @param mixed Value of Name
         */
        
    public function __set($name$value)
        {
            
    $Data serialize($value);
            if (
    strpos($name'Multi_') === 0)
            {
                
    $OldBuffers $this->{"BufferListe_" $name};
                if (
    $OldBuffers == false)
                    
    $OldBuffers = array();
                
    $Lines str_split($Data8000);
                foreach (
    $Lines as $BufferIndex => $BufferLine)
                {
                    
    $this->{'Part_' $name $BufferIndex} = $BufferLine;
                }
                
    $NewBuffers array_keys($Lines);
                
    $this->{"BufferListe_" $name} = $NewBuffers;
                
    $DelBuffers array_diff_key($OldBuffers$NewBuffers);
                foreach (
    $DelBuffers as $DelBuffer)
                {
                    
    $this->{'Part_' $name $DelBuffer} = "";
                }
                return;
            }
            
    $this->SetBuffer($name$Data);
        }

    }

    /**
     * @property Nodes $Multi_AllNodes 
     * @property string $Multi_String
     */
    class PlugwiseNetwork extends IPSModule
    {

        use 
    BufferHelper;

        
    /**
         * Interne Funktion des SDK.
         *
         * @access public
         */
        
    public function Create()
        {
            
    parent::Create();
            
    $this->Multi_AllNodes = new Nodes(); // Objekt
            
    $this->Multi_String "" // String
        
    }

        protected function 
    YourFunction()
        {
            
    $Nodes $this->Multi_AllNodes// Objekt aus Buffer holen.
            
    $this->Multi_String '1234567865asdfghjgfd' // String in Buffer schreiben.
        
    }
    /* your code here */

    Michael
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

  2. #12
    Registriert seit
    Sep 2014
    Ort
    Limeshain (Hessen)
    Beiträge
    5,424

    Das mit den public functions finde ich jetzt nicht so dramatisch. Das dürfte bei den wenigstens Leuten ein Problem sein...und für meine aktuelle Projekte ist das zum Glück auch gar kein Problem.

    Der "Trick" mit "str_split($Data, 8000);" ist gut Du hast aber auch immer Ideen Danke!

    -Chris-
    IP-Symcon Module >> www.bayaro.net << Verfügbare Module: BatterieMonitor, BundesligaTabelle, Enigma2BY, HeizölPreise, Helios, Horoskop, HostMonitor, IPSInformations, MELCloud, Müllabfuhr, PJLink, RSS, TankerkönigSpritpreise, xREL
    IPS Unlimited, ~1200 Scripte, ~7000 Variablen

Ähnliche Themen

  1. GPIO von Sonoff Modulen
    Von robi im Forum Bastel-Ecke
    Antworten: 6
    Letzter Beitrag: 20.09.17, 13:48
  2. Maximale Anzahl von SONOS Playern in einer Gruppe?
    Von elektroniktommy im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 2
    Letzter Beitrag: 03.12.16, 20:24
  3. Anzahl Assoziationen: Fehlermeldung Maximale Anzahl
    Von PC Oldie im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 22.01.16, 10:17
  4. Antworten: 11
    Letzter Beitrag: 13.04.14, 21:01
  5. Maximale Anzahl von Wertvorgaben bei Bitmasks
    Von cAtMaX im Forum Dashboard
    Antworten: 4
    Letzter Beitrag: 12.04.06, 19:48

Stichworte