PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Archiv für PHP (Allgemein)

Ext 2.0 mit PHP Backend

“Ui, das sieht ja aus wie eine echte Applikation!” Mag der eine oder andere denken… Und da liegt er noch nicht einmal so falsch, wenn man sich Ext 2.0 anschaut.

Aber wie kommen die Streifen in die Zahnpasta oder die Marmelade in den Berliner? Mit anderen Worten: Wie werden starre Ext Oberflächen mit Daten zum dynamischen Web 2.0 Leben erweckt?

PHP Ext ist ein Versuch, der statischen Oberfläche Leben einzuhauchen. Schick objektorientiert gehalten, können mühelos Ext Oberflächen generiert werden. Leider sind noch lange nicht alle Ext Komponenten über das Framework generierbar, wie die PHP-Ext Beispiele zeigen.

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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 ;)

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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.

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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.

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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!

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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).

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

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

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP: Sicherheit groß schreiben

Via Frank. Wem Sicherheit in der Webentwicklung wichtig ist, der sollte sich mal folgende Quellen zu Gemüte führen:

  1. Wordpress-Sicherheit: Plugins sicher gestalten
  2. PHP IDS - PHP Intrusion Detection
  3. Das offizielle PHP Handbuch zum Thema Sicherheit
  4. PHP Security Guide (Deutsche Übersetzung)

Das Buch “PHP Sicherheit
von Christopher Kunz, Peter Prochaska und Stefan Esser

Steht schon eine ganze Weile bei mir im Bücherregal und ist wirklich eine lesenswerte Lektüre. Man erfährt nicht nur Tipps und Tricks zur Abwehr - die meist angewandten Angriffe werden auch noch genau beschrieben.

Wenn ich mal ein Security Update brauche, schaue ich immer dort als erstes nach. Absolut empfehlenswert!

Anzeigen bei Amazon.de

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP Mailer Update: miniMail V1.3

Zu guter letzt gibt es noch ein kleines Update meines schlanken und beliebten PHP Mailers “miniMail”. Mittlerweile hat er Version 1.3 erreicht, der kleine Racker *zwinker*

Was ist neu an dieser Version?

Natürlich ist der miniMailer auch nach wie vor unter der bekannten Download-Adresse verfügbar: http://www.phpblogger.net/download/minimail.phps

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks
Ältere Artikel »