PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Eine Community Bilanz

Bist Du Qyper? Schon bei Xing oder noch StudiVZ? Wer kennt wen? Und vor allem: was weiß ich?

Gaanz gaanz früher waren Online-Communities noch sehr überschaubar. Da konnte nicht jeder Hinz und Kunz ein Onlineportal aufbauen. Ich denke da an AOL, die gigantische Ur-Community. Oder ICQ - was ja jetzt wieder einen kleinen Auftrieb bekommen hat und unzählige Eltern Minderjähriger in den allabendlichen Wahnsinn treibt. Aaaaah, kennt noch jemand U-Boot oder Flirtlife?

Irgendwann kam der Zeitpunkt, wo es und 100erte Communities und mindestens so viele Messenger-Dienste gab (und es wurden/werden stündlich mehr). Klar, das alle Freunde die damals einen Internetanschluss hatten, bei einem anderen Dienst waren, als man selbst. MSN, Yahoo und so weiter und so fort.

Den kompletten Artikel lesen »

Lesbaren Code schreiben

Über die Lesbarkeit von Code wird viel geschrieben. Aber trotzdem nie genug. Der PHP Blogger gibt nun sein Quentchen Weisheit dazu und hofft der Welt einen Gefallen zu tun. Nachfolgend ein paar Tipps, um Code lesbarer zu gestalten:

Gibt Bedingungen einen Namen

Jeder kennt die riesen if($prozent < $max_prozent && $prozent > $min_prozent && abs($durchschnitt_prozent - $prozent) < $durchschnitt_prozent_abweichung) - Dinger. Nach einer Woche hat man keine Ahnung mehr, was man mit diesem Code sagen wollte. Obwohl keine kryptischen Bezeichner verwendet wurden. Abhilfe? Ein Kommentar. Naja. Ich schlage mal was neues vor:

// Prozentzahl im zulässigen Bereich und keine
// größere Abweichung zum Durchschnittswert
$prozentzahl_im_zulaessigen_bereich= (
    $prozent < $max_prozent
    && $prozent > $min_prozent
    && abs($durchschnitt_prozent - $prozent)
       < $durchschnitt_prozent_abweichung
  );
if($prozentzahl_im_zulaessigen_bereich)
{
  // Mach was...
}

Cool, oder? Wenn man die selbe Bedingung oder eine erweiterte Version davon an verschiedenen Stellen benötigt, kann man es auch so machen. Und Kommentare müssen nur in speziellen Fällen überflogen werden… Ps: Schreibe auch Abbruchbedingungen für Schleifen aus! while($weitere_datenssatze_vorhanden) {}

Nutze Konstanten so oft wie möglich

Jedes Framework bietet sie an. PHP bietet sie an. Konstanten benennen Zustände oder feste Werte. Cool! Ein paar interessante Konstanten: DIRECTORY_SEPARATOR, CURRENCY_SYMBOL und THOUSANDS_SEP - Wenn das mal nicht lesbar ist…

Ein Ding ist ein Ding ist ein Ding

Benenne Objekte und Variablen nach Dingen und Zuständen und gibt Funktionen und Methoden Namen, die sich auf eine Aktion beziehen. Ein Beispiel:

define("FIRST_KEY", 1);
$haus->oeffneHaustuer(
    $schluesselbund->nimmSchluessel(FIRST_KEY)
  );

Organisiere globale Funktionen…

…obwohl sie eigenständig sind trotzdem in Hilfs-Objekten und mache sie statisch verfügbar. Ein Aufruf könnte so aussehen:

GraphicsHelper::generateThumbnail($fullsize_image);

Jedes Hilfsobjekt kommt in eine eigene Datei, die wie das Hilfsobjekt benannt ist: So findest Du Funktionsdefinitionen schneller und hast nicht eine riesige unsortierte Datei voll mit globalen Hilfsfunktionen.

Update: Verkette Funktionsaufrufe

Ein sehr mächtiges Feature ab PHP 5 ist Method-Chaining. Objekte, die von Funktionen zurückgeliefert werden, können direkt angesprochen werden: Das Ergebnis ist eine gut lesbare Funktionskette:

$app->actions(APP_CONTENT)->execute();

Method-Chaining ist nicht limitiert - wer seine Funktionen geschickt anordnet, kann fast grammatikalisch korrekte Sätze formulieren ;)

PATH_TRANSLATED Ersatz

Letzte Woche war ich mal wieder auf Bugsuche - eine Datei wurde nicht gefunden, obwohl sie an Ort und Stelle war: Das Problem lag bei der Variable $_SERVER['PATH_TRANSLATED'] - die wurde nämlich mit Version 4.3.2 per Default abgeschaltet.

Als Alternative bietet sich $_SERVER['SCRIPT_FILENAME'] an. Der Inhalt ist genau der selbe.

Zufalls-Passworte zu generieren

Jeder weiß es: Die sichersten Passworte sind länger als 6 Zeichen, beinhalten keine sinnvollen Worte und sind zusammengestückelt aus Groß- und Kleinbuchstaben, Sonderzeichen und Zahlen. Aber wer kann sich die merken? Und erst ausdenken?

Bei Projekten kommt es immer mal wieder vor, das man Benutzer generieren muss. Die brauchen auch ein Default-Passwort. Gut, wenn man eine Idee hat, wie man das generieren kann.

GoodPHPTutorials stellt genau das in einem ausführlichen Artikel zum Thema Passworte generieren vor.

jQuery Update

Die Entwickler von jQuery haben sich ins Zeug gelegt und präsentieren uns kurz vor dem Wochenende noch ein neues jQuery Release: 1.2.3 - meins ;-) Hoffentlich hagelt’s wegen dem Wortspiel jetzt keine Klagen…

Neben ein paar Bugs wurden auch neue Features hinzugefügt:

  1. Daten-Container mit Namespaces (praktisch für Plugins)
  2. Events mit Namespaces: ebenfalls praktisch für Plugins, beim Plugin entfernen können mit einem Befehl (unbind) alle Event-Catcher entfernt werden.
  3. Der Event-Trigger greift nur noch bei Events ohne Namespace

Download (unkomprimiert): http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.3.js

PHP Mailer Update: miniMail Version 1.3.2

BriefumschlagUnd wieder grüßt das Murmeltier. Es ist schon fast nervig, aber als Bug-Vernichter tut man halt sein Bestes. Der flinke und im Codezeilen/Feature Verhältnis gut bestückte PHP Mailer miniMail ist einen Revisionssprung höher gerutscht.

Dank Renes Hinweis konnte ich einen Bug, der mehrere Attachments betrifft, beheben. Nicht vorhandene Unit-Tests werden eben immer sofort bestraft.

Download: http://www.phpblogger.net/download/minimail.zip

Entwickler-Chefkoch Teil 2: Lachspasta 2.0

Staffel 1, Bewerber 2. Meine Güte, ich hab jetzt schon Hunger – wie auch nicht, bei diesem Gericht. Klingt teuer, aber schmackhaft und ist trotz der super Zutaten relativ günstig und schnell zubereitet. Wer seine Mutti beeindrucken will, ist mit dieser Speise auf der sicheren Seite.

Wannabe-Chefkoch 2 ist diesmal Börge. Börge selbst kann von seinem Gericht nicht genug bekommen – nach eigenen Angaben hat er es selbst schon etwa 30 Mal gespachtelt. Ich hoffe, es geht ihm nicht wie dem Michel aus Lönneberga; ihr wisst schon, der in der Suppenschüssel…

Was macht Börge denn sonst so? Er arbeitet als Projektleiter und bereitet seinen Blog unter http://www.boerge.net/ vor. Zu sehen ist noch nix, aber ich bin mir sicher, dass da bald was Schickes zu bewundern sein wird. Er hat auch ne Tante in Wuppertal, die er grüßen möchte. Ich nehme mal, die liest (wie sein Onkel Fritz, Vater Bertram und Mutter Gunzhilde) immer schön PHP Blogger, wenn sie morgens aufsteht und eine Tasse Kaffee in der Hand hat :-)

Den kompletten Artikel lesen »

PHP Streams: Service Abstraktion

Manuel Lemos von den PHP Classes zeigt einige schöne Beispiele mit Streams. Man kann damit sehr transparent entfernte oder lokale Daten ansprechen, auslesen und verändern. Eigene Protokolle sind damit schnell implementiert.

Hintergründe gibt es dabei im offiziellen PHP Handbuch, leider unvollständig auf deutsch übersetzt - aber für den Anfang tut’s… Um das PHP Killer Feature “Streams” verständlich an den Mann zu bringen, zeigt er die Implementierung eines POP3 Handlers - sehr lesenswert. Ich spare mir einen Abklatsch und empfehle da englische Original :)

Oben drauf gibt es zudem noch die besten Stream-Implementierungen aus dem PHP Classes Archiv. Ein bunter Blumenstraus an Services: also nix wie zugreifen!

Performance: MySQL Result-Sets auslesen

Endlich seit langem mal wieder ein sehr interessanter Artikel vom PHP Performance Blog. Diesmal wurde untersucht, mit welcher Methode man am schnellsten Daten aus einem MySQL Result-Set laden kann.

Als Sieger benennt er mysql_fetch_row (Platz 1) und mysql_fetch_assoc (knapp dahinter auf Platz 2). Diesmal gibt es zwei Sieger, obwohl eine Funktion eindeutig schneller ist :) Der Grund ist ganz einfach: mysql_fetch_assoc ist schlichtweg übersichtlicher und zukunftsicherer als ein numerisch aufgezogenes Array (Man denke an neue Tabellenspalten).

PHP Mailer Update: miniMail Version 1.3.1

BriefumschlagFür das Mainrelease des miniMailers ist ein reines Bugfix-Update erhältlich. Version 1.3.1 behebt einen Bug in der UTF-8 Kodierung des Betreffs.

Zur Klasse: Der beliebte schlanke PHP Mailer erlaubt das Versenden von HTML Mails mit UTF-8 kodiertem Text. Das Ziel des PHP Mailers? Eine schlanke Klasse mit flinkem Interface anbieten, die das schnelle und unkomplizierte Versenden von mehrsprachigen HTML Mails mit Attachments erlaubt. Alle Features im Überblick:

  • UTF-8 Kodierung
  • HTML Mails
  • Datei-Anhänge
  • Newsletter Modus (via BCC Header)
  • Mail Prioritäten
  • Lesebestätigung
  • Empfangsbestätigung
  • Static-Modus (Direktes Aufrufen der Sende-Funktionen)

Der kleine PHP Mailer ist ein excellenter Wrapper für die native PHP mail-Funktion: Für die meisten Anwendungen gibt es bereits eine eigene Sendefunktion und eigene Header-Implementierungen sind damit auch möglich.

Download:
http://www.phpblogger.net/download/minimail.zip

« Neuere Artikel · Ältere Artikel »