PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘PHP’ Category

Callbacks und Hooks in PHP

with 11 comments

Dies ist ein Text, der von einem Autor auf content.de erstellt wurde. Mehr dazu im Artikel über den content.de Test.

Callbacks und Hooks sind beliebte Methoden in PHP, verschiedene Funktionen untereinander kommunizieren zu lassen. Sie dienen insbesondere der Funktionserweiterung. So nutzen beispielsweise Systeme wie WordPress und Drupal Callbacks und Hooks, um Plugins und Module sauber zu implementieren.

Die Bedeutung des Callback

Mit dem Callback werden ein oder mehrerer Parameter an eine Funktion übergeben. Diese Parameter werden über den Callback, zu deutsch „Rückruf“, direkt übergeben oder von einer anderen Stelle des Skripts abgerufen.

Beim Callback wird grob zwischen einfachen Funktionsnamen, Klassenmethoden und statischen Klassenmethoden unterschieden. In allen drei Fällen leitest du die Rückrufaktion mit call_user_func ein. Die aufgerufene Funktion startet aufgrund dieses Befehls den Abruf der übergebenen Parameter, welche in Form von Arrays oder Argumenten definiert sind, und gibt die entsprechenden Werte aus.

Einfacher Funktionsname und Klassenmethode

Weiterlesen »

Written by Michael Kliewe

Mai 12th, 2011 at 9:55 am

Posted in PHP

Tagged with , , ,

PHP 5.3 Feature: Namespaces

with 4 comments

Dies ist ein Text, der von einem Autor auf content.de erstellt wurde. Mehr dazu im Artikel über den content.de Test.

Mit Hilfe der Skriptsprache PHP werden hauptsächlich Webanwendungen oder Webseiten erstellt. Unter der PHP-Lizenz wird PHP als freie Software verbreitet. Durch die breite Datenbankunterstützung, Internet-Protokolleinbindung und durch die Verfügbarkeit zahlreicher Funktionsbibliotheken zeichnet sich PHP aus. Bei 75 Prozent aller Webseiten wird PHP als Programmiersprache eingesetzt. Es gibt keine andere Programmiersprache, die häufiger verwendet wird als PHP.

Viele wichtige PHP-Versionen wurden bis zum heutigen Tage entwickelt und in Zukunft wird die Entwicklung weiter laufen. Zu den wichtigen Versionen gehört auch PHP 5.3. Diese Version wird ausgezeichnet durch die Unterstützung von Namespaces. Der englische Begriff Namespace ist ein Programmierungsbegriff. Namespace bedeutet übersetzt Namensraum. Bei der objektorientierten Programmierung werden die Objektnamen als Baumstruktur angeordnet. Eindeutig angesprochen werden diese durch gewisse Pfadnamen innerhalb von der Namespace.

Weiterlesen »

Written by Michael Kliewe

Mai 12th, 2011 at 9:54 am

Posted in PHP

Tagged with , , ,

Slides der PHP Community Conference 2011

with 2 comments

An zwei Tagen im April fand die diesjährige PHP Community Conference statt. Es war keine riesen Konferenz, aber hochkarätige Speaker wie Rasmus Lerdorf, Lorna Mitchell, Matthew Weier O’Phinney und Andrei Zmievski sowie weitere bekannte PHPler waren vor Ort. Leider habe ich nicht alle Präsentationen gefunden, wenn ihr die restlichen findet, nur her damit.

21. April 2011
Web Services
Lorna Mitchell

Mastering Zend Framework 2 Patterns
Matthew Weier O’Phinney

Lithium
Joël Perras

Frontend Caching: The New Frontier
Helgi Þormar Þorbjörnsson

22. April 2011
Opening Keynote
Rasmus Lerdorf

Phorum
Brian Moon

Weiterlesen »

Written by Michael Kliewe

Mai 5th, 2011 at 9:35 am

Monitoring PHP mit New Relic RPM

with 8 comments

Ich merke gerade, dass ich noch gar nicht NewRelic vorgestellt habe. In PHP-Cloud-Diensten wie CloudControl oder PHPFog bekommt man direkt auch einen NewRelic-Account, sodass man es kostenlos nutzen und testen kann. Es ist eine Möglichkeit, die Performance von PHP-Scripten zu monitoren, also sowohl Webseiten als auch PHP-CLI-Aufrufe. Es werden neben der Ausführungszeit auch Speicherverbrauch, den Durchsatz (Requests pro Sekunde) und Datenbankqueries geloggt, PHP Errors werden zentral erfasst. Bei Problemen kann man via Email benachrichtig werden, und es werden auch Optimierungsempfehlungen und eine Skalierbarkeitsvorschau gegeben.

NewRelic lässt sich auch auf Produktivsystemen einsetzen, da es die Performance fast nicht beeinträchtigt, XDebug ist beispielsweise zur detaillierten Performance-Messung auf Produktivsystemen nicht geeignet, da es viel zu viel Performance kostet. Falls mehrere Webserver für eine Applikation zuständig sind können diese zusammengefasst werden. Aber auch andersrum ist es möglich, unterschiedliche Ordner auf einem Webserver voneinander zu trennen, sodass sie gesondert betrachtet werden können.

Die Installation ist denkbar einfach unter Linux: Eintrag in die apt-sources und danach apt-get install newrelic-php5 , schon ist die PHP-Erweiterung installiert und aktiviert. Diese Extension loggt die Daten in eine Datei, die von einem Dienst alle paar Sekunden gesammelt an die RPM-Server gesendet werden, wo man dann mit tollen Graphen und Listen alles fast in Echtzeit ansehen kann. Es können auch weitere Zugriffsaccounts angelegt werden, sodass mehrere Personen die Überwachung im Blick haben und analysieren können.

Weiterlesen »

Written by Michael Kliewe

Mai 4th, 2011 at 9:21 am

Posted in PHP

Tagged with , ,

Extending and Embedding PHP

with 4 comments

Im Februar habe ich von Andre das Buch Extending and Embedding PHP von Sara Golemon angeboten bekommen, und da ich noch keinen tieferen Blick in die Erstellung von PHP Extensions geworfen habe, habe ich zugeschlagen. Wie man bei Amazon lesen kann ist es DAS Standard-Buch wenn es um PHP Erweiterungen geht. Allgemein gibt es über die Innereien von PHP nur wenig Literatur, umso interessantere Einblicke gibt das Buch.

Die 410 Seiten beginnen mit einem Überblick über den PHP Lebenszyklus. Wie verhält sich PHP im CLI Modus, in einer Multi-Prozess-Umgebung, in einer threaded-Umgebung oder wenn PHP in eine andere Applikation eingebettet wird? Es gibt definierte Initialisierungspunkte, in die sich eine Extension einhängen kann (bzw. muss), und eine threaded Umgebung ist nicht ganz problemfrei wenn es um Datenzugriff etc. geht. Auf jeden Fall interessante Einblicke, was PHP so beim „Start“ tut.

Weiterlesen »

Written by Michael Kliewe

April 28th, 2011 at 10:16 am