Kategorie:PHP: Unterschied zwischen den Versionen
Asphyx (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Asphyx (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
Zeile 13: | Zeile 13: | ||
===`??` vs. `isset()` ab PHP 7.4.22 / PHP 8=== | ===`??` vs. `isset()` ab PHP 7.4.22 / PHP 8=== | ||
In PHP-Webentwicklung ist es wichtig, sicher mit Variablen umzugehen, die möglicherweise nicht existieren oder leer sind, z. B. bei Formulareingaben oder Konfigurationsdaten. Der Null-Coalescing-Operator (`??`) und die Funktion `isset()` helfen dabei, Standardwerte zu setzen und Fehler zu vermeiden. `??` ist eine moderne, kurze Schreibweise, während `isset()` in älteren PHP-Versionen häufiger war. Ab PHP 7.4.22 und besonders in PHP 8 können Unterschiede zwischen diesen Ansätzen Kompatibilitätsprobleme verursachen, da `??` direkt einen Wert liefert, wenn eine Variable nicht gesetzt oder `null` ist, während `isset()` prüft, ob eine Variable existiert und nicht `null` ist. Dies betrifft vor allem Anwendungen, die zwischen PHP-Versionen (z. B. 7.4 und 8) wechseln, und erfordert eine Anpassung, um robusten Code zu gewährleisten. | |||
'''Beispiel:''' | '''Beispiel:''' | ||
<source lang="php"> | <source lang="php"> | ||
define(' | define('USE_ISSET', 0); // 0 für ?? (PHP 8+), 1 für isset() (PHP 7.4) | ||
function | function getConfig($value, $default = '') { | ||
if ( | if (USE_ISSET) { | ||
return isset($value) ? $value : $default; // Älteres Verhalten | return isset($value) ? $value : $default; // Älteres Verhalten | ||
} | } | ||
Zeile 27: | Zeile 27: | ||
// Beispielaufruf | // Beispielaufruf | ||
$ | $shop = ['theme' => 'dark']; | ||
$ | $theme = getConfig($shop['theme'], 'light'); | ||
echo $ | echo $theme; // Ausgabe: dark | ||
// Problemfall: Nicht gesetzte Variable | // Problemfall: Nicht gesetzte Variable | ||
$ | $currency = getConfig($shop['currency'], 'EUR'); | ||
echo $ | echo $currency; // ?? gibt 'EUR', isset() könnte Fehler auslösen | ||
</source> | </source> |
Version vom 24. April 2025, 17:05 Uhr
Informationen folgen in Kürze - es findet aktuelle eine Datenübernahme statt.
Funktionen
PHP mail() mit Umlauten
Nicht-kodierte Umlaute in E-Mails sind grundsätzlich nicht erlaubt und entsprechen nicht dem RFC. E-Mails können deswegen von Empfängern (insbes. GMX, Gmail & Co, die sehr streng sind) abgelehnt werden. Auf php.net gibt es dazu sowohl Hinweise auf den RFC, als auch weiter unten ein Beispiel zur korrekten Kodierung von deutschen Umlauten mit der PHP mail() Funktion.
Kompatibilität
`??` vs. `isset()` ab PHP 7.4.22 / PHP 8
In PHP-Webentwicklung ist es wichtig, sicher mit Variablen umzugehen, die möglicherweise nicht existieren oder leer sind, z. B. bei Formulareingaben oder Konfigurationsdaten. Der Null-Coalescing-Operator (`??`) und die Funktion `isset()` helfen dabei, Standardwerte zu setzen und Fehler zu vermeiden. `??` ist eine moderne, kurze Schreibweise, während `isset()` in älteren PHP-Versionen häufiger war. Ab PHP 7.4.22 und besonders in PHP 8 können Unterschiede zwischen diesen Ansätzen Kompatibilitätsprobleme verursachen, da `??` direkt einen Wert liefert, wenn eine Variable nicht gesetzt oder `null` ist, während `isset()` prüft, ob eine Variable existiert und nicht `null` ist. Dies betrifft vor allem Anwendungen, die zwischen PHP-Versionen (z. B. 7.4 und 8) wechseln, und erfordert eine Anpassung, um robusten Code zu gewährleisten.
Beispiel:
define('USE_ISSET', 0); // 0 für ?? (PHP 8+), 1 für isset() (PHP 7.4)
function getConfig($value, $default = '') {
if (USE_ISSET) {
return isset($value) ? $value : $default; // Älteres Verhalten
}
return $value ?? $default; // Modernes Verhalten
}
// Beispielaufruf
$shop = ['theme' => 'dark'];
$theme = getConfig($shop['theme'], 'light');
echo $theme; // Ausgabe: dark
// Problemfall: Nicht gesetzte Variable
$currency = getConfig($shop['currency'], 'EUR');
echo $currency; // ?? gibt 'EUR', isset() könnte Fehler auslösen
Diese Kategorie enthält zurzeit keine Seiten oder Medien.