Antwort an „Raketenwilli“ verfassen

Die Typumwandlung könnte scheitern, wenn wirklich NULL im Datenfeld steht. Da er modernes PHP einsetzt,

Hm. Ich wohl auch. Ich hatte das wie folgt getestet:

<?php
error_reporting( E_ALL );
print phpversion() . "\n";

$row['bewertung'] = null;
print "„" . htmlentities( (string)$row['bewertung'], ENT_QUOTES  ) .'“' . PHP_EOL;
print "Meldung erwartet: „" . htmlentities( $row['bewertung'], ENT_QUOTES  ) .'“' . PHP_EOL;


Ausgaben:

$ php /tmp/test.php 
8.4.27
„“
PHP Deprecated:  htmlentities(): Passing null to parameter #1 ($string) of type string is deprecated in /tmp/test.php on line 7
Meldung erwartet: „“

auf der anderen Maschine:

$ php /tmp/test.php 
8.5.12
„“
PHP Deprecated:  htmlentities(): Passing null to parameter #1 ($string) of type string is deprecated in /tmp/test.php on line 7
Meldung erwartet: „“

Die erzwungene Typumwandlung funktioniert also. An der von Dir erwähnten Stelle steht:

The expression (expr1) ?? (expr2) evaluates to expr2 if expr1 is null, and expr1 otherwise.

„In particular, this operator does not emit a notice or warning if the left-hand side value does not exist, just like isset(). This is especially useful on array keys.“

Das würde also dann eine Fehlermeldung unterdrücken, wenn $row['bewertung'] nicht besetzt (false === isset( $row['bewertung'] ) ) wäre - was vorliegend nicht der Fall und gerade nicht gefordert ist: Deine Lösung tut also zu viel.

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen