Kategorie:PHP
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.
PHP7 | PHP8 Kompatibilität
`??` vs. `isset()` ab PHP 7.4.22 / PHP 8
PHP bietet mit dem Null-Coalescing-Operator (`??`) und der Funktion `isset()` zwei Möglichkeiten, sicher mit Variablen umzugehen, die möglicherweise nicht definiert sind, z. B. bei Formulareingaben oder Konfigurationsdaten in Webshops. `??` liefert schnell einen Standardwert, wenn eine Variable nicht existiert oder `null` ist, während `isset()` prüft, ob eine Variable definiert ist und nicht `null`. Beide Ansätze verhindern Fehler wie „undefined index“ und sind essenziell für robusten Code. Besonders für autodidaktische Programmierer ist es wichtig zu verstehen, dass Unterschiede zwischen diesen Methoden ab PHP 7.4.22 und PHP 8 zu Kompatibilitätsproblemen führen können, wenn Code zwischen verschiedenen PHP-Versionen wechselt.
In Webentwicklungsprojekten kann der Null-Coalescing-Operator (`??`) ab PHP 7.4.22 und besonders in PHP 8 Kompatibilitätsprobleme verursachen, wenn Anwendungen auf `isset()` basieren. Der Operator `??` ist ein Null-Coalescing-Mechanismus, der einen Fallback-Wert liefert, falls eine Variable nicht gesetzt oder `null` ist, während `isset()` eine explizite Existenz- und Null-Prüfung durchführt. Dies führt zu unterschiedlichem Verhalten bei Funktionen für sichere Konfigurationszugriffe, abhängig von der PHP-Version (z. B. PHP 7.4 oder PHP 8). Entwickler können eine Konstante verwenden, um zwischen dem modernen `??`-Operator und dem traditionellen `isset()`-Ansatz zu wechseln, um plattformübergreifende Kompatibilität zu gewährleisten.
Beispiel:
define('USE_MODERN_PHP', 1); // 1 für ?? (PHP 8+), 0 für isset() (PHP 7.4)
function getValue($value, $default = '') {
if (!USE_MODERN_PHP) {
return isset($value) ? $value : $default; // Älteres Verhalten
}
return $value ?? $default; // Modernes Verhalten
}
// Beispielaufruf
$blog = ['language' => 'de'];
$language = getValue($blog['language'], 'en');
echo $language; // Ausgabe: de
// Problemfall: Nicht gesetzte Variable
$timezone = getValue($blog['timezone'], 'UTC');
echo $timezone; // ?? gibt 'UTC', isset() könnte Fehler auslösen
Diese Kategorie enthält zurzeit keine Seiten oder Medien.