Globale Variablen in PHP-Modulen

Hallo zusammen,

nach dem Event in Lübeck versuche ich mich nun an meinem ersten PHP-Modul :slight_smile:

Allerdings habe ich das Problem das Werte von globalen Variablen zurückgesetzt werden…
Ich habe eine globale Variable erstellt.

class OneButtonAutoLight extends IPSModule
{
private $lightMode;
...

Dann habe ich diese Variable in der Create Methode gefüllt.

public function Create()
{
$this->lightMode = 12345;
...

Wenn ich mir den Inhalt der Variable noch in der Create Methode ausgeben lasse enthält sie den von mir gesetzten Wert 12345.

$this->SendDebug("Create", "LightMode ".$this->lightMode, 0);

Wenn ich die gleiche Ausgabe allerdings zu einem späteren Zeitpunkt ausführe (nicht in der Create Methode), dann enthält die Variable den Wert 0.

$this->SendDebug("ToggleLightMode", "LightMode ".$this->lightMode, 0);

Viele Grüße
Sven

Ja, weil es Scripte sind :slight_smile:
Das erstellte Objekte aus deiner Klasse wird zerstört sobald das Script beendet wurde.
Also nach dem Create oder nach dem ApplyChanges usw…
Einstellbare persistente Werte gehören in die Settings (ReadProperty).
Dynamische Werte welche persistent während der gesamten Laufzeit von IPS gebraucht werden kannst du in einem Instanzbuffer schreiben/lesen.
Michael

OK, danke für die Info. Ich hatte auch bereits eine andere Lösung, allerdings wollte ich doch mal wissen warum das mit globalen Variablen nicht funktioniert…
Allerdings finde ich die Sache mit dem Instanzbuffer sehr umständlich.

Viele Grüße
Sven

Was brauchst du den persistent zur Laufzeit was du nicht aus den Settings bekommst oder anderweitig herleiten kannst ?

Michael

Nichts, es funktioniert alles. Wenn man aber nicht weiß das man globale Variablen nicht verwenden kann…

Viele Grüße
Sven

Globale Variablen sind etwas anderes und die kannst du teilweise verwenden (also lesen).
Das wäre z.B. $_IPS $_GET usw. für z.B. Webhooks.

Was du meinst sind Eigenschaften einer Klasse :wink:

Michael