PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘ifset’ tag

Was fehlt dir an PHP?

with 46 comments

PHP bietet oft neue Releases mit neuen Features. Nicht immer sind es große Features, aber ab und zu erblicken wir erfreut Funktionen, die das Programmieren vereinfachen bzw. vorher selbst geschriebene Funktionen überflüssig machen. Doch einige Features wünscht man sich schon lange, und es gibt sie einfach nicht. Welches genau diese gewünschten Features sind möchte ich hier sammeln, vielleicht liest es ja jemand aus dem PHP-Team mit und schlägt es für eine Umsetzung vor.

Da ich auch nach minutenlangem Überlegen nichts gefunden habe was mit an der Sprache fehlt, möchte ich hier die Überlegungen von Florian Heinze vorstellen.

—————————————————–

Eine kleine Funktion die das Vorhandensein einer Variablen oder eines Array-Elements prüft, und dann entweder die Variable zurückliefert oder NULL.

$var = isset($foo) ? $foo : null;

vereinfachen zu

$var = ifset($foo);

Die beiden folgenden Zeilen sind nicht equivalent und tun nicht das was gewünscht ist:

$var = $foo ?: null;
$var = isset($foo) ?: null;

—————————————————–

Nachträglich Getter+Setter für ein Klassen-Attribut erstellen, ohne die aufrufenden Befehle zu ändern. In C# funktioniert das so:

private string _name;

public string Name
{
    get { return this._name; }
    set { this._name = value.ToLowerCase(); }
}

—————————————————–

Die vorhandene Funktion array_merge_recursive fügt Arrays nicht so zusammen wie man es manchmal benötigt, beispielsweise für Konfigurationsdateien, wo man eine Hauptkonfiguration hat und dann je nach Umgebung eine weitere Konfiguration dazulädt, wobei die spezielleren Einstellungen die Standardwerte überschreiben sollen. Bei array_merge_recursive werden Arrays zwar zusammengeführt, aber die Werte im selben Array werden nicht überschrieben, sondern angehängt.

<?php
$ar1 = array("width" => 10, "color" => array("favorite" => "red"));
$ar2 = array("color" => array("favorite" => "green"));
$result = array_merge_recursive($ar1, $ar2);

wird zu

array(
    "width" => 10,
    "color" => array(
        "favorite" => array("red", "green")
    )
)

gewünscht ist aber in diesem Fall

array(
    "width" => 10,
    "color" => array(
        "favorite" => "green"
    )
)

—————————————————–

Die größte Heldentat um PHP sicherer zu machen wäre für htmlspecialchars() und htmlentities() kürzere Versionen anzubieten. Diese beiden so wichtigen Funktionen sind ja sowas von zu lang und hässlich in HTML-Views das sie keiner verwenden mag 😉 Besser wäre ein schlichtes kurzes esc()!

—————————————————–

Über was seid ihr so gestolpert in den letzten Jahren, was fehlt, was ist stark verbesserungswürdig, wofür müßt ihr andauernd Helferfunktionen bereitstellen, was eigentlich die Sprache bereits mitliefern sollte?

Written by Michael Kliewe

Dezember 13th, 2010 at 9:21 am