Class, eigene Klasse erstellen ...

Hallo zusammen,

ich würde gerne im IPS eine eigene Klasse erstellen. Dann würde ich gerne im IPS meine Klasse bekannt machen, damit ich implementierten Methoden verwenden kann.

Was muss ich alles dafür im IPS machen um meine Klasse bekannt zu machen ?

Gruß
MacToolz

Die Doku lesen:
PHP — IP-Symcon :: Automatisierungssoftware
Abschnitt Globales Include.
Michael

Hi,

danke … und wie kann ich erkennen ob die richtig eingebunden wurde?

Gruß
MacToolz

Meinst du diese Frage jetzt wirklich ernst?
Einfach ein Script in IPS erstellen und ausprobieren.
Oder zum testen einen logeintrag mit IPS_Logmessage in der autoload generieren. Danach aber wieder entfernen, müllt dir das Log sonst zu.
Michael

Hi,

naja eigentlich war meine Frage schon ernst …

Also im Script erkennt der Editor meine Methode wenn ich meine Klasse als Objekt erzeuge …
Also hat das schon mal ohne Probleme funktioniert.

Eine andere Frage wäre wie kann ich denn bei den Ereignissen meine Methoden oder Funktionen aufrufen?

Gruß
MacToolz

Genauso…
Weil die Datei immer eingebunden wird.
Und ein Ereignis führt auch nur PHP-Code aus.
Autovervollständigung für deine Klasse wird im Editor aber bestimmt nicht funktionieren.

Eventuell solltest du dich erstmal mit den Grundlagen beschäftigt bevor du eher spezielle oder komplexere Themen in Angriff nimmst.
Michael

Bei PHP Modulen wird ein Objekt der Klasse automatisch zum Start erzeugt, wenn Du eine eigene Klasse hast und kein PHP Modul und dies in der Autoload eingebunden ist musst Du dann durch den Aufruf der Autoload, wie Du das in dem Skript machst, auch Dein Objekt erzeugen. Ansonsten sind PHP Module vielleicht eine Option, aber vieles lässt sich sicher auch erst mal ohne Klassen oder PHP Module lösen.

Hi,

ok der Unterschied war mir nicht klar.

Wenn ich ein Objekt über das Script erzeuge, wo kann ich das dann sehen oder ist es wirklich nur im Speicher verfügbar?

Gruß

Wenn Du ein Objekt erzeugst ist es im Skript in dem es erzeugt wurde verfügbar. In einem anderen Skript musst Du meines Wissens dann wieder ein neues Objekt erzeugen, aber das weis Nall Chan sicher besser. Ansonsten existieren ja bei PHP Modulen Instanzen, die von IP-Symcon beim Start von IP-Symcon erzeugt werden, diese sind dann auch jederzeit als Instanz ansprechbar, außerdem hast Du den Vorteil bei PHP Modulen das Du die Eigenschaften der Klasse von IP-Symcon mitgespeichert werden. Bei einer eigenen Klasse weis ich nicht wie man da Daten, außer in Variablen, über einen Neustart des IP-Symcon Diensts hinaus behält.

Egal was du in PHP machst, es ist eine Scriptsprache welche in einen Thread ein Script ausführt und dann wird der Thread beendet (Mit ein Script meine ich natürlich inklusive alle Include).
Somit werden alle Variablen und instanzierten Objekte bei Beendigung des Scriptes/Threads verworfen.
Persistent kannst du keine Daten in PHP vorhalten.

Michael

Ok,

das heißt wenn ich dann ein Script durchlaufe und ich würde eventuell was im IPS behalten wollen, müsste ich dann mir dort Variabeln erstellen?

Gruß

Korrekt :slight_smile:

Wie wäre es mal mit ein paar Versuchen und ein paar Grundlagen? Dann ergeben sich viele Antworten von ganz alleine :slight_smile: Fragen dauert ja länger als versuchen g

Grüße,
Chris

ja jaaaa, bin dabei, bin halt nicht PHP versiert und mit IPS auch nicht, von daher ich hangel mich mal so rum …

und kämpfe :slight_smile:

Wie binde ich denn die IPS Lib ein?

Gruß