IPS_* Konstanten

Hallo,

Die IPS_* Konstanten (wie z.B. IPS_BASE) sind bei mir weder in Modulen noch in IPS Skripten verfügbar.
Ist da was kaputt?

Gruß,
Florian

Nö, nicht kaputt. Die gibt es einfach nicht.
Musst du selbst implementieren.
Und sind auch nicht für Scripte gedacht, weil diese mit Messages eh nix anfangen können.
Michael

Aber theoretisch könnte man die einbinden, damit die dann überall verfügbar sind!?

Aber wer die jetzt „von Hand“ definiert würde dann wahrscheinlich schöne Fehlermeldungen bekommen. Es würde somit nicht Abwärtskompatibel.

paresy

Nö, die meisten haben bestimmt bei mir geklaut und dann funktioniert das auch wenn du die Umsetzt.
Hatte früher mit doppelter Definition schon Probleme, wenn in einem Script zwei Funktionen aus Modulen ausgeführt wurden.
Von daher wird das abgefangen, wenn IPS_BASE schon definiert wurde. :wink:
Michael

Edit: Aber dann bitte auch mit den Konstanten für die VarTyps, InstanceStatus etc.

Das wäre super!

@Nall-Chan, so ist es.
Bei mir sieht das dann so aus: :slight_smile:
https://bitbucket.org/patami/ipspatami/src/32b62f005dcda35b022779559f2ffded75cfbe81/libs/ipsdefines.php?at=feature%2Fauto-switch&fileviewer=file-view-default

Ich möchte das Thema aus gegebenem Anlass (siehe hier) noch einmal hochholen. Ich habe seit der Installation des Patami Frameworks Probleme mit dem SymconMisc Modul. Der USBMapper wird beim Starten des Dienstes nicht mehr geladen:

17:35:56 | 00000 | MESSAGE | PHPLibrary           | Registriere Funktion... Reflection parse error: <br />
<b>Notice</b>:  Constant IPS_BASE already defined in <b>C:\IP-Symcon\modules\SymconMisc\USBMapper\module.php</b> on line <b>2</b><br />
<br />
<b>Notice</b>:  Constant IPS_KERNELSTARTED already defined in <b>C:\IP-Symcon\modules\SymconMisc\USBMapper\module.php</b> on line <b>3</b><br />
{"FixPorts":{}}

Wenn jeder die Konstanten selber definiert ist das Chaos vorprogrammiert. Auch patamis Methode mit

if (! defined('IPS_BASE')) {
...

ist nicht sicher: Sobald jemand in seinem Modul ausschließlich IPS_BASE definiert und als erster geladen wird sind im patami Framework nicht mehr alle Konstanten geladen. So ist es im USBMapper! Würde das USBMapper Modul vor dem patami Framework geladen, dann hätte das Framework Stress. Meiner Meinung nach eine tickende Bombe.

Für den Moment brauche ich zumindest eine Lösung für das USBMapper Problem. Mittelfristig sollten aber alle IPS Konstanten veröffentlicht werden.

Gruß

Burkhard

Du hast vollkommen Recht. Ich schlage somit vor, dass wir zur 4.4 die Konstanten direkt mit IP-Symcon ausliefern. Bedeutet jedoch, dass alle PHP Modulentwickler sauber die if(defined()) Checks einbauen, damit es dann nicht kracht.

Ich habe soeben ein Update für SymconMisc hochgeladen, welches diese Überprüfung macht.

paresy

Hast Du ein Beispiel wie das konkret auszusehen hat, dann kann man das ja einbauen?

Siehe Post 7 und 6 und meine Module …
Michael

Sehr gut :loveips: Bitte dabei auch an die functions.ips.php denken.:slight_smile:

Danke klappt. Fehlermeldung ist weg.

Und auch die Konstanten für die VarTyps und InstanceStatus :wink:
Sonst sind meine Module gleich kaputt :smiley:
Michael