Archive for the ‘PHP’ Category
PHPStorm 60% günstiger! Bis zum 30.04.2011
Als Ostergeschenk gibt JetBrains 50% Rabatt auf PHPStorm ab heute bis zum 30.04.2011. Zusammen mit meinem Gutschein über 20% ergibt das insgesamt 60% Rabatt! Statt 99€ nur noch 39€!
Die neuesten Features, die in 2.1 kommen werden, sind übrigens:
- Eingebaute jQuery Dokumentation
- .htaccess Unterstützung (Autovervollständigung und Erkennung von URLs)
- NodeJS support plugin
- Eine Datei aus der Autovervollständigung entfernen (sinnvoll falls man mehrere Versionen von mootools/jQuery in seinem Projekt liegen hat)
Außerdem ist ein Jira-Connector in Planung. PHPStorm rockt!
Ein eigener Zend_Auth_Adapter gegen einen IMAP Server
Mit Hilfe von Zend_Auth kann man wunderbar Authentifizierungen durchführen, und dem Zend Framework liegen auch bereits einige Adapter bei, wie zum Beispiel DbTable, Digest, Http, InfoCard, Ldap und OpenId. In einem meiner Projekte wollte ich gegen einen IMAP-Server authentifizieren, jeder der einen IMAP-Account hat soll sich auf der Webseite einloggen können. Dazu habe ich einen kleinen Auth-Adapter geschrieben, den man so benutzt:
// authenticate against imap $imapAdapter = new App_Auth_Adapter_Imap($this->_applicationIni->imap->host); $imapAdapter->setIdentity($formData['LoginName']) ->setCredential($formData['LoginPassword']); $result = $imapAdapter->authenticate(); if (!$result->isValid()) { // Authentication failed } else { // Authentication successful }
Der genutzte Adapter sieht so aus:
PHP 5.3 Feature: Late static binding (LSB)
PHP 5.3 brachte unter anderem auch Late-Static-Binding (LSB). Ich würde tippen, dass einige von euch wissen was das ist, aber nur sehr wenige von euch dieses Feature bisher benötigt und eingesetzt haben. Ich möchte hier zwei kleine Beispiele zeigen, an dem klarer wird, wofür LSB benötigt wird:
class ClassA { public static function getName() { return self::name(); } public static function getNameLSB() { return static::name(); } public static function name() { return 'ClassA'; } } class ClassB extends ClassA { public static function name() { return 'ClassB'; } } echo ClassB::getName(); // ClassA echo ClassB::getNameLSB(); // ClassB
Je nachdem ob self:: oder static:: genutzt wird, wird einmal die Elternmethode und einmal die Kindmethode aufgerufen. self:: bindet sich früh (beim Kompilieren) an seine Klasse, static:: erst bei der Ausführung (dann an die Kindklasse).
Ein paar Zend_Mail Tricks
Wer Mails verschickt, nutzt bei sehr einfachen (Admin) E-Mails meistens die eingebaute mail() Funktion. Sobald es aber darum geht komplexere E-Mails zu versenden wird man wahrscheinlich eine Klasse benutzten, die es einem einfacher macht, Anhänge anzuhängen, einen text/plain und einen text/html Teil mitzusenden, zusätzliche Empfänger zu definieren oder inline-Bilder gleich mit in die Email zu packen.
Es gibt dutzende gute Mail-Klassen und Libraries da draußen (ezcMail, htmlMimeMail5), ich benutze häufig Zend_Mail. Mit den verschiedenen Zend_Mail_Transport_* Klassen ist es möglich, die Mails über sendmail (sprich über mail()) zu versenden, oder aber beispielsweise mit Hilfe des SMTP-Protokolls an einen SMTP-Server zu übergeben. Seit wenigen Monaten neu ist Zend_Mail_Transport_File, womit die E-Mail nicht versendet wird, sondern „nur“ in eine Datei geschrieben wird. Ich habe mir früher einen solchen Adapter selbst geschrieben, nun ist er im Zend Framework enthalten.
Mit diesem Adapter ist es sehr einfach möglich, beispielsweise in der Entwicklungsumgebung keine E-Mails zu versenden, damit nicht aus Versehen beim Testen des Abschickens eines Formulars wirkliche E-Mails versendet werden, sondern nur zu Debuggingzwecken in eine Datei geschrieben wird. Beispielsweise so:
Confoo 2011, die Mega Konferenz
Ihr sitzt zwar alle gerade wahrscheinlich vor eurer neuen PHPStorm Version oder programmiert eine Vier-Gewinnt-KI, aber trotzdem gibt es hier einige neue Präsentationen. Vom 6. bis zum 11. März 2011 fand zum zweiten Mal die Confoo in Montreal statt. Stolze 144 Talks, 3 Workshops und eine Keynote, bis zu 8 Sessions gleichzeitig, was für ein Programm. Einige der unten stehenden Präsentationen sind bereits bekannt, der größte Teil aber ist neues Futter zum Lesen, Lernen und Ausprobieren. Viel Spass dabei!
(Wer fehlende Präsentationen findet, bitte melden!)
06. März 2011
Using Linux tracing tools to analyse a LAMP stack
Yannick Brosseau
How to create social apps for millions of users
Bastian Hofmann
07. März 2011
Advanced PHP Development
Arne Blankerts, Stefan Priebsch, Sebastian Bergmann
Démarrer avec Symfony2
Hugo HAMON