$this->GetIDForIdent ... liefert bei FALSE ein Warning - Wieso?

Hi @ all

$this->GetIDForIdent … liefert nicht nur ein FALSE, wenn ist die Variable nicht gibt, sondern auch ein Warning. Was besonders in der Modul-Instanz bescheiden ist, weil dann ein PopUp mit dem Warning kommt.

Warum kann die Funktion einfach ein FALSE liefern ohne diese schwachsinnige Warnung?? :mad:

Wenn ich folgendes IF mache:

if ($this->GetIDForIdent($VarIdent) === false)

…dann will ich doch keine bescheidene Warnung haben! :mad:

Ja, kann ich mit einem @ unterdrücken, aber welchen Sinn hat dieses Warning? Außer einen zu nerven… :confused:

>> Und war das schon immer so, oder ist das neu? Ich meine das war früher nicht?!? …aber bin mir nicht sicher…

Grüße,
Chris

War immer schon so.
Darum steht in der Doku der PHP-Module von Symcon auch immer dass es Fehler gibt wenn Statusvariablen gelöscht werden.

Michael

Ist das ein „PHP-Ding“ oder ein „Symcon-Ding“?

Finde das einfach extrem unschön an so einer Stelle mit @ zu unterdrücken :frowning:

Grüße,
Chris

Ips-Ding, die Methode gehört ja zu Klasse ipsmodule.

Den Fehler musst du ja nicht unterdrücken, wenn du sicher bist dass du z.b. im Create eine Objekt mit diesem Ident erstellt hast.
Die Fehlermeldung bekommt dann nur der User, welcher das Objekt gelöscht hat :wink:

Ich warte eh sehnsüchtig auf direkte Methoden der ipsmodule-Klasse um Statusvariablen zu beschreiben.
Dann fällt zumindest dort das GetIDForIdent weg.

Michael

Sehe ich auch so. Macht in meinen Augen keinen Sinn und ist auch nicht so dokumentiert. Lässt sich das nicht korrigieren?

Gruß

Burkhard

Moin!

In der Doku steht es unter Beschreibung. Auch wenn nicht sooooo deutlich.
Trotzdem unschön … also das Warning an sich :smiley:

GetIDForIdent — IP-Symcon :: Automatisierungssoftware
Zitat:

Der Befehl sucht nach der ObjektID des Objekt mit dem Ident Ident und gibt diese zurück. Sollte der Ident nicht vorhanden sein, wird eine Fehlermeldung erzeugt.

Grüße,
Chris

Tatsächlich. Hatte ich anders in Erinnerung:rolleyes:

Auch unter IPS_GetObjectByIdent steht es.:slight_smile:

OK, der normale Rückgabewert ist ein Integer, aber in diesem Fall ein false. Vielleicht ist die Warnung darin begründet …
Auch andere Get Methoden haben das gleiche Verhalten. Von daher ist es konsistent.

Das ist so gewollt. Dein Modul soll wissen und selber sicherstellen, dass die Variable auf die es zugreift existiert. Es sollte niemals notwendig sein zu prüfen ob eine Variable für einen Ident existiert. Falls der User eine Variable bewusst löscht, soll das Modul auch entsprechend fehlerhaft sein, da es nicht korrekt ist Status Variablen zu löschen.

paresy

Wenn eine Variable gelöscht wurde, dann sollte eine Fehlermeldung kommen - gebe ich dir recht. Mache ich auch so.
ABER ich will da eine „schöne“ und eindeutig verständliche Fehlermeldung vom Modul ausgegeben haben und nicht ein „doofes Warning“ im Meldungen-Fenster…

Wie gesagt, ich unterdrücke es halt mit @ und kümmere mich dann selbst um die Fehlermeldung. Fand es nur unschön da mit @ unterdrücken zu müssen und dachte das könnte man ggf. einfach „abstellen“ von eurer Seite aus :slight_smile:
War ja nur eine „Idee“ :slight_smile:

Grüße,
Chris

Bin da bei einigen Modulen schon dreist, ich lege die gleich wieder an wenn das GetIDForIdent fehlschlägt :slight_smile:
Michael