Meine Feature-Wünsche für PHP

So kurz vor Weihnachten schreibe ich heute mal meinen Wunschzettel. Natürlich nicht irgendeinen Wunschzettel, sondern meine größten Wünsche für kommende Features in PHP.

1.) Skalares Type Hinting
Type Hinting für Klassen und Arrays ist bereits seit PHP 5.1 problemlos möglich. Eine weitere Verbesserung wäre zusätzlich noch sklares Type Hinting einzuführen, also Integer und Float-Werte für Funktionsparameter anzugeben.

function calculate(int $x)
{
    var_dump($x);
}
 
calculate("99");
// int(99)

Da PHP aber schwache Typisierung verwendet, wäre es sinnvoll hier keinen Fehler zu werfen, sondern den String in einen Integerwert zu casten. Diskutiert wurde dieses Thema in der PHP-Community bereits ausgiebig, aber ob dieses Feature wirklich umgesetzt wird, steht noch nicht fest.

2.) Annotations
Viele Frameworks (u.a. Flow, Symfony und Doctrine) setzten bereits auf Annotations, die aber zum großen Teil noch selbständig mittels der Reflection-API geparst werden müssen. Eine allgemeingültige Lösung von PHP selbst wäre nicht nur performanter, sondern würde aus den Annotations auch ein echtes Sprachkonstrukt machen. Auch dieses Thema stand in der PHP-Community bereits zur Debatte.

3.) Foreach-else-Konstrukt
Smarty bietet bereits eine Funktion um foreach-else-Blöcke zu bauen, schöner wäre es aber, wenn PHP diese Möglichkeit von sich aus mitbringen würde.

$array = array();
 
// Aktueller Stand:
if(count($array))
{
    foreach($array as $key => $value)
    {
        echo $value.PHP_EOL;
    }
}
else
{
    echo "Keine Datensätze vorhanden.";
}
 
// Und so könnte es zukünftig aussehen:
foreach($array as $key => $value)
{
    echo $value.PHP_EOL;
}
else
{
    echo "Keine Datensätze vorhanden.";
}

Der untere Code ist wesentlich kürzer und lesbarer.
Die Community diskutiert sogar darüber das gleiche Konstrukt auch für for- und while-Schleifen einzusetzen und darüber hinaus die Abfragen noch mit elseif zu erweitern. Ich wäre allerdings schon mit der einfachen foreach-else Variante sehr zufrieden.

Bleibt abzuwarten welche Features sich in den kommenden Releases von PHP durchsetzen werden. Zumindest die oben beschriebenen Features wären von meiner Seite aus die meistgewünschten.

Tabs vs. Spaces > Einrückungen in der Programmierung

Dabei sind sich alle Entwickler einig: Einrückungen halten den Programmcode leserlich und übersichtlich. Dennoch gibt es hier einen großen Streitpunkt: Welches Steuerzeichen soll zur Einrückung verwendet werden? Manche halten es für eine Philosophie ähnlich wie der Kampf Mac vs. Linux vs. Windows, oder TYPO3 vs. Drupal, oder auch Einfache vs. Doppelte Anführungszeichen bei Strings. Bei dem Thema Tabulator vs. Leerzeichen sehe ich es allerdings anders.

Das größte Argument für die Verwendung des Leerzeichens als Einrückung war immer, dass es universell auf allen System gleich dargestellt wird. Wenn man eine Textdatei mit 4 Spaces speichert, sieht die Datei unter Mac, unter Windows oder unter jedem anderen Betriebssystem und in jedem Texteditor immer gleich aus. Ein Argument, das für viele Entwickler die Diskussion an dieser Stelle beendet. ABER: Wer so denkt, lebt immer noch in der Vergangenheit. Wir haben inzwischen nicht mehr 1999, sondern 2012. Das Tab-Zeichen ist auf den meisten Systemen vereinheitlich worden und viele moderne Editoren und Entwicklungsumgebungen lassen sich problemlos umkonfigurieren. Damit wäre das größte Argument für die Verwendung von Spaces neutralisiert.

Das sind die Vorteile von Tabs:

  • Ein Tab ist nur ein einziges Steuerzeichen.
    Durch Tabs werden die Dateigrößen reduziert, weil eine Einrückung nur noch ein Zeichen lang ist statt 4 Leerzeichen.
  • Schneller durch den Code navigieren.
    Der Cursor springt schneller über ein Tab, als über 4 Leerzeichen.
  • Einheitliche Länge der Einrückung.
    Ein Tab ist in der Regel exakt 4 Leerzeichen lang. Die Länge der Einrückungen bei Leerzeichen variiert dagegen abhängig vom Entwickler und dem verwendeten Editor.

Bei Einrückungen mit Leerzeichen hat sich inzwischen ein bunter Strauß verschiedener Längen gebildet. Der eine verwendet 2 Leerzeichen ein anderer dagegen 4. Und der dritte übersieht beim Überarbeiten des Codes ein Leerzeichen oder schreibt eins zu viel und schon ist das Chaos perfekt. Bei Tabs hingegen sieht man solche Fehler wesentlich schneller.

Ich hoffe ich konnte einige ältere Programmierer davon überzeugen endlich auf Tabs umzusteigen. Es ist einfach die saubere, schnellere und weniger Fehleranfällige Variante zum Einrücken. Wer also die Möglichkeit hat und modern arbeiten möchte, kommt an Tabs einfach nicht mehr vorbei. Auf kurz oder lang werden sich Tabs gegenüber Spaces durchsetzen.

How To: Daten-Backup eines Webhostings unter Linux

Wer einen eigenen Webserver betreibt, sei es privat oder geschäftlich, sollte sich auf jeden Fall mit dem Thema Daten-Backups beschäftigen. Es kann immer mal passieren, dass Daten verloren gehen. Ob nun ein Hackerangriff Daten zerstört hat, die Anwendung nach einem Update nicht mehr lauffähig ist oder man selbst aus Versehen Dateien gelöscht hat, wenn in so einer Situation ein Backup existiert, erspart man sich viel Zeit und Nerven. Aber wie sichert man die Daten auf einem Webserver am einfachsten? Das hier beschriebene Vorgehen verwendet größtenteils einfache Linux-Boardmittel und benötigt zur Einrichtung lediglich ein Root-Zugang zum Server.
» Weiterlesen