Tag: php

201328Dez

PhpFiddle: PHP/MySQL-Snippets online ausführen

Online-Editoren für etliche Programmiersprachen gibt es mittlerweile mehrfach: Ideone oder Compilr wären bekannte Vertreter dieser Art. Für JavaScript/HTML/CSS haben sich Tools wie JS Bin, JSFiddle oder CodePen durchgesetzt. Für PHP-Entwickler, die direkt im Browser ein Code-Snippet ausprobieren möchten oder einem Kollegen eine MySQL-Funktion zukommen lassen wollen, sollten einen Blick auf PhpFiddle werfen. Dabei handelt es sich im Prinzip um das Pendant zu JSFiddle, nur eben für PHP.

PhpFiddle - The Best Place to Run PHP/MySQL, HTML/CSS and JavaScript Online

Der Online-PHP-Editor kommt mit verschiedenen API-Anbindungen und bietet die Möglichkeit, bekannte Bibliotheken einzubinden. Zudem können SOAP- und XML-RPC-Services angesteuert werden und die Verwendung von MySQLi, PDO sowie PHPMailer ist ebenfalls möglich. Gerade für das schnelle Testen von MySQL-Abfragen dürfte PhpFiddle interessant sein: Der Code für die Verbindung zur Test-Datenbank kann per Klick geladen werden. Weiterhin kann der PHP-Code durch etliche Sniffer (PEAR, Squiz, Zend, etc.) validiert werden. Auch eine Securiy-Test-Suite zur Überprüfung von möglichen Sicherheitslücken (CSRF, RFE, XSS, DT, LFI, SQL Injections) steht zur Verfügung.
Schließlich gibt es auch noch eine abgespeckte Variante, die als PhpFiddle Lite bereitsteht und eine weniger komplexe Oberfläche bietet.

201304Dez

reSRC: Sammlung freier Bücher über Programmierung

Was darf es denn sein? Ein Exkurs in die Grafikprogrammierung mit DirectX, OpenGL und Shadern? Oder doch eher die Bereiche Software-Architektur, Datenbanken, Betriebssysteme und Datamining? Allein die Liste der unterschiedlichen Fachgebiete und Programmiersprachen scheint endlos zu sein: Bei reSRC gibt es die "List of Free Programming Books", die Entwickler-Herzen höher schlagen lässt. Hier dürfte wirklich für jeden Programmierer etwas dabei sein.

reSRC - List of Free Programming Books

Neben sprachunabhängigen Bereichen, die teilweise oben schon aufgezählt wurden, gibt es für ziemlich jede Programmiersprache Links zu kostenlosen PDF-eBooks oder Websites: Von ASP.NET und Assembler über C++, CoffeeScript und Dart, vorbei an Erlang, Go, Haskell, JavaScript und Lua bis hin zu Objective-C, PHP, Processing, Python, Ruby, Scala, SQL oder gar TypeScript. Inzwischen gibt es für JavaScript sogar Unterbereiche wie Knockout.js, AngularJS, Backbone oder node.js. Da lohnt sich das Stöbern also.

201202Mär

Webentwicklung: PHP in Version 5.4.0 veröffentlicht

Die Entwickler hinter PHP haben kürzlich die Skriptsprache in Version 5.4.0 veröffentlicht. Mit dieser Version wurden diverse Neuerungen eingeführt und alte Relikte begraben: Unter Anderem wurden die INI-Direktiven "safe_mode", "magic_quotes_gpc" und "register_globals" entfernt, was viele PHP-Entwickler freuen dürfte. Zudem gibt es neue Sprachfunktionen, die das Entwickeln von PHP-Anwendungen beschleunigen können. So können Arrays nun erstellt werden mit:

  • // Numerisch indiziert
  • $arrayA = [1, 2, 3, 4];
  •  
  • // Assoziativ
  • $arrayB = ["eins" => 1, "zwei" => 2, "drei" => 3];

Weiterhin können Array-Elemente direkt bei einem Funktionsaufruf referenziert werden, wie etwa "foo()[0]". Außerdem lassen sich Klassenobjekte schon bei der Instanziierung ansprechen.

PHP in Version 5.4.0 veröffentlicht

Eine Liste der Neuerungen findet sich hier und die neu eingeführten Funktionen gibt es auf dieser Seite. Ein weiteres Feature stellen Traits dar, mit denen sich Code einfacher wiederverwenden lässt. Durch "use TraitName;" können also Methoden und Attribute einfach in eine Klasse übernommen werden, was einer vereinfachten Vererbung entspricht.
Die neue PHP-Version steht hier zum Download bereit und eine Anleitung zur Migration findet sich auf dieser Seite.

201123Nov

Webentwicklung: Effektive URL-Ausdrücke in PHP

In Webanwendungen sind Validierungen ein wichtiges Thema, die nicht immer auf Anhieb gut zu lösen sind. Während beispielsweise HTML5 für Eingabefelder schon ein fertiges Attribut zur Validierung mitbringt, sind für andere Szenarien eigene Lösungen erforderlich. Eine beliebte Überprüfung, die etwas schwieriger zu erstellen ist, wäre so beispielsweise eine URL-Validierung. Durch reguläre Ausdrücke sollten hier entsprechende Maskierungen vorgenommen, so dass gefährliche Einträge oder Umgehungsversuche nicht an die Anwendung bzw. die Datenbank übergeben werden.
Mathias Bynens hat zu dieser Thematik eine Matrix zusammengestellt, in der vordefinierte URLs durch unterschiedliche Ausdrücke validiert werden.

In search of the perfect URL validation regex

In den Kopfzeilen der Tabelle finden sich die Autoren von regulären Ausdrücken, die unterschiedlich gut funktionieren. Jeder reguläre Ausdruck ist unterschiedlich lang: Während die Spoon Library 979 Zeichen benötigt, schlägt der Ausdruck von Diego Perini nur 502 Zeichen zu Buche. Seine Validierung beinhaltet auch die Verwendung von IP-Adressen im Bereich von 1.0.0.0 bis 223.255.255.255. Der "S"-Modifier wurde in den Tests zur Erhöhung der Geschwindigkeit eingesetzt, sollte aber in einer produktiven Umgebung nicht verwendet werden.
Wichtig bei einer Validierung ist auch die Überprüfung des HTTP-Protokolls und somit des Präfixes "http://". Zu diesem Bereich gibt es in der Übersicht eine separate Tabelle, in der diverse Beispiele für mögliche URLs aufgeführt sind.

201108Sep

HamlPHP: Haml-Templates in PHP verwenden

Wer schon einmal mit Ruby oder Rails gearbeitet hat, wird das Template-System "ERB" kennen. Durch die Metasprache wird es ermöglicht, Ruby-Quelltext in HTML-Templates zu implementieren und auszuwerten. Noch kürzer geht das Ganze mit Haml (HTML Abstraction Markup Language), einer vereinfachten Auszeichnungssprache, die in erster Linie als Ruby-Gem zur Verfügung steht. Mit Haml können HTML-Templates noch kompakter geschrieben und dennoch mit dynamischen Bereichen ausgestattet werden. Ein Merkmal der Sprache ist die Auswertung von Einrückungen (Leerzeichen), die Auswirkungen auf die semantische Struktur des Dokuments haben.
Mittlerweile stehen auch für PHP Implementierungen der Haml-Syntax zur Verfügung und einen Vertreter davon stellt HamlPHP dar.

Haml - HTML Abstraction Markup Language

Das Projekt besteht aus verschiedenen Klassen und erzeugt nach dem Parsen eines Haml-Templates eine temporäre PHP-Datei, die schließlich interpretiert und im Browser ausgegeben wird. Der HamlPHP-Parser kann nach der Einbindung von entsprechenden Klassen wie folgt verwendet werden:

  • <?php
  • $content = $parser->parseFile("template.haml");

Ein Haml-Template könnte dann so aussehen:

  • !!! 5
  •   %html
  •   %head
  •   %body
  •     #container
  •       %h1{"id" => "header"} Headline
  •     %a{href => "http://haml.info/"} Haml-Website

Die finale Ausgabe:

  • <!DOCTYPE html>
  • <html>
  • <head></head>
  • <body>
  • <div id="container">
  • <h1 id="header">Headline</h1>
  • </div>
  • <a href="http://haml.info/">Haml-Website</a>
  • </body>
  • </html>

Es können also beliebige Attribute gesetzt werden und zudem können über bestimmte Maskierungen auch CSS-, JavaScript- oder PHP-Bereiche integriert werden. PHP-Auswertungen können auch über eine spezielle Syntax direkt ausgeführt werden, die in HamlPHP als "Interpolation" bezeichnet werden.
In dem Paket sind zudem etliche Beispiele enthalten und wer Haml direkt ausprobieren möchte, kann dazu den Bereich auf der offiziellen Website nutzen.

201105Sep

Hyperpolyglot: Skriptsprachen im direkten Vergleich

Wer als Webentwickler unterwegs ist, hat je nach Projekt und Server-Umgebung die Wahl, welche Skriptsprache eingesetzt werden soll. Die Entscheidung dürfte in erster Linie von der bestehenden Erfahrung und den Anforderungen des Projekts abhängen. Mit PHP, Ruby, Python und Perl stehen gleich mehrere Skriptsprachen zur Auswahl, die für Webanwendungen eingesetzt werden können. Eine kleine Entscheidungshilfe könnte hier die Hyperpolyglot-Übersicht sein, die ähnlich wie meine JavaScript Framework Matrix die Unterschiede der Sprachen aufzeigt.

Hyperpolyglot - Scripting Languages - PHP, Perl, Python, Ruby

Die "Side-by-Side Reference Sheets" repräsentieren eine Tabelle, bei der jede Skriptsprache einer Spalte entspricht. In den Zeilen finden sich verschiedene Verhaltensweisen und Eigenschaften der jeweiligen Sprache. Dazu zählen im Allgemeinen etwa Blockbegrenzungen, Zuweisungen, Operatoren, Scoping, globale Variablen, Konstanten oder Kommentare. Unterteilt ist die Tabelle in mehrere Bereiche wie Logik, Arrays, reguläre Ausdrücke, Funktionen, Prozesse, Objekte, Reflexion oder Debugging. So gibt es also zu allen Skriptsprachen entsprechende Code-Beispiele. Ein Klick auf eine Eigenschaft führt zur Definition, so dass alle Begrifflichkeiten nachgeschlagen werden können. Weiterhin gibt es auch Hintergrundinformationen zu den verschiedenen Sprachen.
Die Matrix ist übrigens nur eine Auskopplung der gesamten Übersicht von Hyperpolyglot: Hier finden sich solche Referenzblätter zu nahezu allen Programmiersprachen.

201105Aug

PPI Framework: Flexible MVC-Bibliothek für PHP

Wer sich noch nicht ganz entscheiden kann, mit welchem PHP-Framework das nächste Projekt aufgesetzt werden soll, sollte sich einen Vergleich oder eine Matrix ansehen, in der die Features von großen Bibliotheken dargestellt werden. Wenn es etwas kompakter sein darf, leisten auch weniger populäre Frameworks gute Dienste. Das PPI Framework beispielsweise ist sowohl auf kleine Blog-Systeme als auch auf umfangreiche E-Commerce-Projekte ausgelegt und bietet neben der MVC-Struktur solide Features, mit denen sich Sessions und Request-Daten verarbeiten und Caching-Mechanismen integrieren lassen.

PPI Framework

Die Bibliothek enthält einen Bootstrapper, der für die Grundkonfiguration zuständig ist:

  • include('../ppi/init.php');
  • $app = new PPI_App();
  • $app->boot()->dispatch();
  •  
  • system.base_url = http://localhost/mysite/
  •  
  • system.masterController = home

Hier kann auch ein Master-Controller definiert werden, der aufgerufen wird, sobald keine Route in der URL definiert wird.
Das Routing ist sehr einfach zu verstehen und kann in etwa so aussehen:

  • // File: App/Controller/User.php
  • class APP_Controller_User extends APP_Controller_Application {
  •  
  • function index() {
  • echo 'Hello Index';
  • }
  •  
  • function profile() {
  • echo 'Hello Profile';
  • }
  •  
  • }

Hier werden die Methoden also auf folgenden Routes abgebildet:

  • http://localhost/myapp/user
  • http://localhost/myapp/user/index
  • http://localhost/myapp/user/profile

Das PPI Framework unterstützt verschiedene Template-Engines und so können Templates in gewöhnlichem PHP, Smarty oder Twig geschrieben werden. In der Dokumentation werden die restlichen Funktionalitäten des Frameworks beleuchtet und im Download-Bereich kann die aktuelle Version des Projekts sowie eine Offline-Dokumentation heruntergeladen werden.

201130Jul

Symfony 2: Neue Version des MVC-Frameworks final

In einem Blog-Eintrag ließ Fabien Potencier letzte Woche verlauten, dass Version 2 des Symfony-Frameworks nun fertiggestellt ist. Über 250 Entwickler haben an der neuen Version mitgearbeitet und Interessierte konnten in der Zeit davor schon fleißig Vorab-Versionen testen, die allerdings noch nicht für den produktiven Einsatz gedacht waren.
Das ändert sich nun mit dem Erscheinen der finalen Version und erste Eindrücke des neuen Frameworks sammelt man am besten in der Quick Tour, in der die Struktur der Bibliothek beleuchtet wird.

Symfony 2

Symfony zählt neben CakePHP und dem Zend Framework zu den bekannteren PHP-Frameworks, die eine große Anzahl an Funktionen mitbringen. Der Datenbankzugriff erfolgt über eine ORM-Ebene, die durch Doctrine gegeben ist. Konfigurationen können per YAML und Templates mit Twig geschrieben werden, wobei natürlich auch nativer PHP-Code und sogar das Deklarieren von Annotations möglich ist. Symfony unterstützt Plugins, wodruch beispielsweise die ORM-Ebene auch durch einen anderes System ersetzt werden kann. Komponenten für Sicherheit, Formulare, Validierung, Session-Verwaltung und Request-Handling machen das Framework zu einem robusten Werkzeug für komplexe Webanwendungen.
Die Einarbeitung in ein solches System ist nicht einfach und deshalb bedarf es hier einer guten Dokumentation. Bei Symfony 2 ist diese mehrfach verfügbar und es empfiehlt sich zuerst einen Blick in das Buch oder auch in das Kochbuch.