Ein paar Grundlegende Anfängerfragen

  1. Wie wichtig ist es ein Skript mit „?>“ zu beenden? Ich habe nämlich festgestellt, dass ich das bisher am Ende meiner Skripte nie gemacht habe :see_no_evil: Die Skripte liefen aber trotzdem.

  2. Kann man eigentlich in IPS Endlosschleifen abfangen, wenn ich das im PHP-Skript nicht ordentlich gemacht habe? Ich muss dann immer den Dienst hart über den Windows-Task-Manager beenden und wieder neu starten.

  3. Wie prüfe ich ob noch Syntax-Fehler in meinem Skript sind? Aktuell merke ich das erst bei der Ausführung an der Fehlermeldung in der Visu.

  4. Wo finde ich Skript-Fehler im Log? Unter Meldungen und Statusprotokoll konnte ich irgendwie nix finden

Viele Grüße André

So schön nummeriert :slight_smile:
Zu 1: weglassen. Wird nicht benötigt. Kann sogar Fehlermeldungen verursachen, da alle Ausgaben von einem Script ein Fehler darstellen. Siehe 4

Zu 2: gar nicht. Und ja, den Dienst hart beenden ist dann die einzige Möglichkeit.

Zu 3: grobe Syntax Fehler (parse Fehler) kannst du in der Konsole über ausführen sehen. Programmtechnische Fehler (fehlerhafte Variable benutzt, falscher Index von einem Array usw) allerdings nicht. Das geht nur wenn du es anschließend Testes.

Zu 4: Fehlermeldungen landen beim Aufrufer des Scripts. Startest du es im Editor, sind die Fehler als Ausgabe zu sehen. Wenn du es über eine Visu startest, dann sind die Fehler in der Visu zu sehen. Bei Ereignissen sind die Fehler im Meldungsfenster/LogFile.
Leere Fehlermeldungen können entstehen wenn nach dem ?> Leerzeilen folgen.

Michael

Alles klar, dann lasse ich das ?> weiterhin weg😊

Zu 4. Leere Zeilen oder Leerzeichen sind aber ansonsten nicht störend innerhalb des Codes?

In PHP sind Leerzeichen in den meisten Fällen nicht störend und werden vom Interpreter ignoriert. PHP ist eine whitespace-empfindliche Sprache, was bedeutet, dass Leerzeichen, Tabs und Zeilenumbrüche in der Regel keine Auswirkungen auf die Ausführung des Codes haben. Sie dienen hauptsächlich der Lesbarkeit und Strukturierung des Codes.

Hier sind einige Beispiele, wo Leerzeichen keine Rolle spielen:

  1. Variablendeklaration und -zuweisung:

    $a = 5;
    $b=10;
    

    Beide Schreibweisen sind gültig.

  2. Funktionsaufrufe:

    echo "Hallo Welt";
    echo     "Hallo Welt";
    

    Beide Aufrufe sind gleichwertig.

  3. Kontrollstrukturen:

    if($a == $b) {
        echo "Gleich";
    }
    
    if ($a == $b) {
        echo "Gleich";
    }
    

    Beide if-Anweisungen funktionieren gleich.

Es gibt jedoch einige Fälle, in denen Leerzeichen wichtig sind:

  1. Strings:

    $text = "Hallo Welt";
    

    Hier sind Leerzeichen innerhalb des Strings Teil des Textes und werden entsprechend ausgegeben.

  2. Heredoc und Nowdoc:

    $text = <<<EOT
    Hallo Welt
    EOT;
    

    Leerzeichen und Zeilenumbrüche innerhalb von Heredoc und Nowdoc werden beibehalten.

  3. Konkatenation:

    $text = "Hallo" . " " . "Welt";
    

    Hier ist das Leerzeichen zwischen den Anführungszeichen wichtig, um die Wörter im Ergebnis zu trennen.

  4. HTML-Ausgabe:

    echo "<p>Hallo Welt</p>";
    

    Leerzeichen innerhalb von HTML-Tags sind wichtig für die korrekte Darstellung im Browser.

Zusammenfassend kann man sagen, dass Leerzeichen in PHP in den meisten Fällen keine Probleme verursachen, solange sie nicht innerhalb von Strings oder speziellen Konstrukten wie Heredoc/Nowdoc verwendet werden, wo sie Teil der Ausgabe sind. Sie sind jedoch wichtig für die Lesbarkeit und Strukturierung des Codes.

Grinsende Grüße

1 „Gefällt mir“

Moin,
interessant könnte auch das Modul „System Integrity-Check“. Es prüft regelmäßig viele Möglichkeiten die man mit einem Script prüfen kann. Typisches Beispiel Du löscht eine Variable dann findet das Modul die Sachen die trotzdem noch diese Variable haben wollen.

Ralf

Danke für eine Ratschläge! So langsam komme ich voran🤗

Mal schauen, ob die Skripte dann zukünftig meine Ablaufpläne ablösen können. Der Vorteil wäre ganz klar, dass man die Skripte sehr schön von einem zum anderen Projekt kopieren lassen.

1 „Gefällt mir“

Ablaufpläne werden ebenfalls im scripts-Verzeichnis gespeichert, halt als JSON-Dateien statt PHP. Die könnte man also auch von Projekt zu Projekt mitnehmen, wenn man das möchte. Nur als Hinweis, falls das dein einziger Grund ist. Ich möchte hier nicht PHP-Skripte schlechtreden, die haben definitiv ihre Anwendungsfälle.

Das ist ein sehr guter Hinweis! Das werde ich dann mal austesten. Dann müsste man ja nur die Variablen an das neue Projekt anpassen.

Vielen Dank Niels

@paresy @Dr.Niels gibt es denn ein passendes Webinar von euch in dem so grundlegende Dinge, bzgl. PHP Skripte erstellen behandelt werden?

Einfach mal einfacheAanwendungsbeispiele zeigen oder sowas wie, wofür setzte man $_IPS[‚SENDER‘] $_IPS[‚VALUE‘] sinnvoll ein.

Es gibt in eurer Doku zwar ein paar Beispiele unter Wie kann ich…? Aber fehlen da immer noch ein paar grundlegende Dinge, um die Beispiele sinnvoll selbst nutzen zu können. Und ich hab schon einige Erfahrung mit z.B. Programmieren in C, aber irgendwie verstehe ich die ganzen Zusammenhänge innerhalb von IPS noch nicht😩

So ein paar Webinare für Entwickler gibt es ja von eurer Seite. Aber wir sind auch meist 1 Stunde und länger. So ein komprimiertes Grundlagen Webinar von vielleicht 30 Minuten wäre glaube ich eine schöne Sache. Gerne kann ich euch dafür mal ein paar Dinge nennen, bei denen mir aktuell noch das Verständnis fehlt. Ich glaube nicht mal, dass es viel ist, aber rund diesen grundlegenden Sachen gelingt es mir, hier und da etwas umzusetzen. Aber ich bin sicher, dass es in vielen Fällen deutlich einfacher ginge. Ich bin mir auch noch nicht mal sicher, ob mir nun das Verständnis für PHP fehlt oder ob es IPS spezifische Dinge sind, die ich noch nicht verstanden habe🤷🏻‍♂️

Ich habe es auf jeden Fall mal als Webinar-Idee notiert. Keine Ahnung, wie man das genau umsetzen sollte, aber dann geht es auf jeden Fall nicht unter :slight_smile:

Vielen Dank. Ich schreiben dir mal eine Mail in der ich mal versuche zu beschreiben, woran es bei mir aktuell hängt.

In wieweit das dann allgemeingültig und umsetzbar ist, könnt ihr euch dann überlegen.