Richtig PHP programmieren

September 2009

Diese hier aufgelisteten Tipps und Tricks sollen einen Wegweiser darstellen, wie man zukunftsorientiert und effizient programmiert, was besonders bei der Software-Entwicklung von Vorteil ist.

Zu Zeiten von PHP 5.3 sollte man PHP 4 als erstes vergessen, denn diese Version ist nun schon mehr als aus der Mode gekommen.
Dazu gehören auch diese Einstellungen:
  • register_globals
  • magic_quotes_gpc, magic_quotes_runtime
Alle drei sollte man auf Off setzen, denn ab PHP 5.3 gelten sie als veraltet (deprecated) und in PHP 6 werden sie nicht mehr unter uns sein. Nebenbei kann register_globals bei schlecht programmiertem Code ein Sicherheitsrisiko darstellen, und die Magic Quotes sind immer wieder ein Dorn im Auge oder verleiten zur Vernachlässigung der Sicherheit bei MySql.

error_reporting auf höchste Stufe stellen, denn unterdrückte Notices können PHP ausbremsen.
Folgende Einstellung ist für die Entwicklung am besten geeignet: E_ALL | E_STRICT
Dazu gehört auch, dass man Fehlermeldungen nicht mit einem "@" unterdrücken soll, sondern anderweitig umgehen, z.B. mit einer zusätzlichen if-Anweisung, da Fehlermeldungen, auch wenn sie unterdrückt werden, einen Geschwindigkeitsverlust des Scripts mit sich ziehen.

Alte Funktionen nicht benutzen, denn diese werden in PHP 6 teilweise entfernt.
Zu den veralteten Funktionen gehören unter anderem sogenannte Aliase. Das sind Funktionen, welche genau dasselbe machen wie eine neuere Funktion.
Ein Beispiel ist sizeof(), ein Alias von count().
Aliase erkennt man an ihren Kennzeichnungen im PHP-Manual. Siehe hier für eine Liste der Alias-Funktionen.
Weitere veraltete Funktionen sind die ereg-Funktionen. Anstatt diesen sollte man preg_*() verwenden.

GET- und POST-Variablen richtig prüfen, weil diese Daten vom Clienten kommen und ihnen somit nicht vertraut werden kann. Dazu gehören auch Werte aus Cookies und die eint oder andere $_SERVER-Variable.
Es gibt einfache Möglichkeiten diese Variablen zu filtern, sodass sie nur gewollte Werte besitzen.
  • Boolean, welcher als 0 oder 1 übergeben wird: $boolean = (bool)(int)$_GET['boolean'];
  • Ganzzahl: $integer = (int)$_GET['integer']; bzw. Fliesskommazahl: $float = (float)$_GET['float'];
  • Hexadezimale Zahl als String: $hex = dechex(hexdec($_GET['hex']));
  • Zeichenketten, die mit MySQL weiterverarbeitet werden: $string = mysql_real_escape_string($_GET['string']);

Zu obigem Punkt sollte noch angefügt werden, dass auf die $HTTP_*_VARS-Variablen verzichtet werden sollte, denn diese sind veraltet. Stattdessen sollte man wie erwähnt die $_*-Variablen (z.B. $_GET) verwenden.
Als Nebeneffekt kann man register_long_arrays auf Off stellen, was einen Vorteil in der Performance bringt.

Des Weiteren sollte man immer versuchen, den Speicher-Verbrauch (auszulesen mit memory_get_peak_usage()) sowie die Runtime (benötigte Zeit zur Script-Ausführung) möglichst tief zu halten, damit das Script auch in stark eingeschränkten Umgebungen laufen kann.

Siehe auch:
 
PHP


Andere Einträge


Kommentare

#1
von lutz am 16.04.2010
Hallo,

Sie schreiben "Alte Funktionen nicht benutzen" und weiter unten "Zeichenketten, die mit MySQL weiterverarbeitet werden: $string = mysql_escape_string($_GET['string']);". Dabei sollte es doch mysql_real_escape_string heißen da mysql_escape_string doch veraltet ist und nicht mehr benutzt werden sollte.

Ansonsten eine sehr schöne Seite! Machen Sie weiter so!

Freundliche Grüße,
Lutz

#2
von Floern am 18.04.2010
Sali Lutz,
danke für den Hinweis bezüglich MySQL. Ich habe es entsprechend korrigiert.

#3
von phil am 29.09.2011
Eine sehr schöne Seite, ich freue mich endlich eine Quelle gefunden zu haben die nicht PHP 4 und 5.3 vermischt wie es viele tun.
Können Sie vielleicht Bücher empfehlen welche es ebenso Handhaben? Ich habe zwar viele gelesen über PHP, aber alle vermischten sie PHP 4 und 5.3

Freundliche Grüße,
phil