Fehler unexpected public im Modul

Hallo,

ich mache gerade meine ersten Versuche mit den neuen Modulen in IP-Symcon 4.

Ich habe in der module.json ein Präfix von AIOIT festgelegt, in der form.json

steht unter actions


{
                    "type": "Button",
                    "label": "On",
                    "onClick": "AIOIT_PowerOn($id);"
                },

In der modul.php steht in der public function ApplyChanges()

diese Funktion


public function PowerOn() {
		SetValueBoolean($this->GetIDForIdent('STATE'), true);
		return $this->SetPowerState("E");
		}

Wenn ich jetzt das Modul ausführe erhalte ich die Fehlermeldung:
Parse Error: syntax error unexpected ‚public‘ (T_PUBLIC) in Zeile X
Die Zeile auf die sich diese Meldung bezieht ist die Funktion PowerOn()

Hat jemand einen Tipp was ich hier grundlegend falsch mache?

Habe die Ursache selbst gefunden die Funktion muss natürlich separat stehen und nicht innerhalb von ApplyChanges().

Allerdings bekomme ich jetzt die Meldung kann die Variable mit Ident Status nicht finden.
Was muss ich hier denn noch beachten?

Hallo,

Hast DU sie denn erstellt?
Wenn Du das in der modules.php machen möchtest, geht das mit


$this->RegisterVariableInteger("Status", "Status", "", 29);

Aber schau doch mal hier: RegisterVariableInteger — IP-Symcon :: Automatisierungssoftware

Gruß,
Thorsten

Dank deinem Hinweis habe ich jetzt noch mal das ganze Script durchforstet und siehe da es war ein kleiner Rechtschreibfehler.

Was macht ihr denn für ein sinnvolles Debugging für die neuen PHP Module? Gibt es da einen Trick oder muss ich einfach so lange suchen bis ich den Fehler gefunden habe.

Hi,

Eine halbwegs vernünftige Entwicklungsumgebung hätte das als Fehler Markiert :wink:

hier nen paar echt gute

PHPStorm (Kostenpflichtig) ist mein Favorit
NetBeans (OpenSource)
PHP Eclipse (OpenSource)

Grüsse
Dave

Prima danke, das schaue ich mir mal an. Als Anfänger habe ich mir mal mit Notepad beholfen, aber da findet man dann halt nix so einfach.

Dazu noch eine Frage, kann ich PHPStorm so einrichten, dass die Dateien lokal auf dem Entwicklungsrechner liegen und dann per SFTP auf den Raspberry mit IPS geschoben werden, um dann das Modul testen? Oder muss ich damit IPS eine Aktualisierung des Moduls mitbekommt jedes mal über github gehen?

Hi,

dafür hab ich nen localen Git Server (raspi), dann muss man auch nicht jedesmal den Symcon dienst neustarten :wink:

Grüsse
Dave

Hallo,

eine gewagte Aussage.
Kommt darauf an, wo der Typo war.

Wenn es beim Namen der Variablen war, hift Dir kein noch so guter Editor…

Ansonsten reicht meist aber auch schon ein gescheites Syntax highlighting. Und das gibt es schon bei einfachen Tools wie vi oder Notepad++ :wink:

Aber jeder wie er mag.

Gruß,
Thorsten