Ternärer Operator – if-else in Kurzform

Der ternäre Operator ist sicherlich vielen bekannt und je nach Vorliebe verhasst oder beliebt:

Kurz gesagt: hinter dem Fragezeichen in der Kurzform steht die Anweisung oder Zuordnung die ausgeführt wird, wenn die Bedingung $a == 1  wahr ist. Hinter dem Doppelpunkt steht dann dementsprechend das Gegenstück, also das was passiert wenn die Bedingung falsch ist. Die Klammerung im obigen Beispiel ist optional.

Sonderfälle bei der Anwendung des ternären Operators:

Wird nur abgefragt, ob ein Wert vorhanden ist (nicht empty , NULL , '0'  oder false) ohne diesen mit einem konkreten Gegenstück zu vergleichen, so kann die o.g. Schreibweise weiter verkürzt werden:

Sollte $a  nicht definiert sein, so wird ein E_WARNING ausgegeben – und damit kommen wir auch schon zum zweiten Sonderfall. Soll die Ausgabe des E_WARNING  verhindert werden, wäre eine zusätzliche Prüfung isset($a)  erforderlich. Diese Verkettung von Operationen wiederum verhindert die Nutzung der Kurzform. Beispiel:

Das erste obere Beispiel gibt true zurück, falls $a  definiert ist und nicht empty , NULL , '0'  oder false. Gewollt war in diesem Fall aber, den Wert von $a auszugeben (Beispiel 2). Das ist mit der Anweisung ??  zu erreichen (Beispiel 3).

Übersichtlichkeit im Code

Um den Quelltext übersichtlich zu gestalten gibt es hier mehrere Möglichkeiten, die der Situation entsprechend genutzt werden können.

Mehrere Zuweisungen mit ternärem Operator, hier ist u.U. eine mit Tabs eingerückte Schreibweise vorteilhaft:

Bei einzelnen Zuordnungen bevorzuge ich die Schreibform in mehreren Zeilen:

Verkettung von mehreren Operationen:

Die mehrfache/verkettete Verwendung kann zu schwer les- bzw. interpretierbarem Code führen, daher hier nur der Vollständigkeit halber. Anweisungen müssen hierbei in Klammern eingefasst sein, damit korrekt damit umgegangen wird:

 

Accessor Attribut in JSON/Array Ausgabe verfügbar machen

Bei der Konvertierung eines Laravel-Models in JSON/Array werden alle Attribute des Models in das entsprechende Format umgewandelt. Dabei geht jedoch die Möglichkeit verloren, auf Accessoren zuzugreifen. Dies kann jedoch mit dem Model-Attribut $appends  umgangen werden. Hier werde alle Accessoren hinterlegt, die beim Konvertieren mit einbezogen werden sollen.

„Accessor Attribut in JSON/Array Ausgabe verfügbar machen“ weiterlesen

ID – Value basiertes Ergebnis einer PDO-Abfrage

Immer wieder brauche ich diese Art von Abfrage, um einen Wert mit der dazugehörigen ID aus einer DB abzufragen. Das geht ganz einfach:

„ID – Value basiertes Ergebnis einer PDO-Abfrage“ weiterlesen

Dateibaum in Windows cmd erzeugen

Erzeugt einen rekursiven Dateibaum mit allen Dateien und Verzeichnissen des aktuellen Verzeichnisses und speichert diesen in der Datei tree.txt

Die Option /f kann bei Bedarf weggelassen werden, dann wird der Baum direkt auf dem Bildschirm ausgegeben.

SCP über Jump-Host/Bastionshost

Mit scp  Dateien von einem Server auf den anderen zu kopieren ist einfach. Dazu benötigt man je nach Serverkonfiguration z.B. ein private-public-keypair, über das die Authentifizierung am entfernten Server durchgeführt werden kann.

Wenn aber nun der entfernte Server nur über einen Bastionshost erreichbar ist, so muss über einen Tunnel kopiert werden. Dazu bedarf es einiger Vorbereitungen. Diese lohnen sich immer dann, wenn der Vorgang oft wiederholt werden muss und große Datenmengen anfallen. Eine Kopie über den eigenen Rechner bedeutet in dem Fall, dass die Daten zweimal über das Internet bewegt werden müssen, und das kostet je nach Verbindung sehr viel Zeit und blockiert die eigene Bandbreite. Außerdem sind Server untereinander häufig mit weitaus höherer Bandbreite verbunden, so dass man schon mal Geschwindigkeiten von 40-50 MB/s (!) erreichen kann.

„SCP über Jump-Host/Bastionshost“ weiterlesen

Korrekt formatierte E-Mail mit php mail()

Sonderzeichen sind immer wieder ein Ärgernis, vor allem wenn unterschiedliche Systeme diese unterschiedlich darstellen. Viele Web-Mailer machen das intuitiv richtig, einige Mail-Programme leider nicht (u.a. MS-Outlook, AOL-Webmailer, etc.). Um dem entgegen zu wirken, hilft es immer, dem Empfängersystem zu sagen, welche Sprache gesprochen wird (sprich: welcher Zeichensatz wird verwendet)

„Korrekt formatierte E-Mail mit php mail()“ weiterlesen