PHP-Consulting.de

Über PHP und Consulting

Ifset() oder ifsetor() ohne Notice-Fehlermeldung

Um auf eine Variable, deren Existenz nicht gesichert ist (z.B. Benutzereingaben), mit übersichtlichem Code und ohne eine “Notice”-Fehlermeldung zuzugreifen, hilft folgende Funktion:

function ifset(&$value)
{
    if(isset($value)) return $value;
}
ifset($_REQUEST['foo']);
ifset($foo);
ifset($bar['foo']);

Alle Variablen sind nicht gesetzt und es kommt, dank der Übergabe per Referenz (&), zu keinen Notices.

Die Alternative ohne Funktion:

isset($_REQUEST['foo']) ? $_REQUEST['foo'] : NULL;

Sie funktioniert anstandslos, hat aber doppelten Code und ist insgesamt nicht schön zu lesen.

Die Idee dazu ist abgeleitet aus der Diskussion zu einer nativen ifsetor()-Funktion.

Mit einer Funktion wie oben als Beispiel wäre aber ein ifsetor() nicht nötig, da diese Problemlos mit dem Ternären Operator dargestellt werden kann:

ifset($foo) ?: 'bar';

Fazit

Bemüht man sich im eigenen Userland-Code möglichst objektorientiert zu Programmieren, wirkt eine selbst definierte Funktion wie ein Fremdkörper. Natürlich ist es aber auch möglich sie als statische Methode in einer Klasse zu implementieren. Dann wirkt es sauberer, dafür ist der Name länger.

Am saubersten wäre aber natürlich eine solche Funktionalität als natives internes PHP-Konstrukt. Kurzfristig ist damit aber wohl nicht zu rechnen.

Leave a Reply