Unsere kreativen Köpfe entwickeln maßgeschneiderte Apps für Geräte wie das iPhone, das iPad, den iPod Touch oder Facebook. Zu unseren Kunden zählen Unternehmen aus den Bereichen Dienstleistung, Handel, Banken, Versicherung, Immobilien sowie Tourismus und Freizeit.

Das Zend Framework Buch von Ralf Eggert

Abgelegt von Sascha Schoppengerd am 15.09.2009 um 08:54 Uhr

Cover Zend Framework BuchBedingt durch mein kürzlich durchgeführtes Upgrade auf Mac OSX SnowLeopard war ich in den letzten Tagen gezwungen auf die aktuelle Version 7 des Zend Studios zu aktualisieren.

In diesem Zusammenhang wollte ich mich dann natürlich auch mal wieder etwas näher mit dem Zend Framework beschäftigen, denn was nutzen einem all die schönen Funktionen in der IDE, wenn man sie am Ende kaum benutzt?

Also habe ich mich mal nach einigen deutschen Informationsquellen umgesehen und wurde eigentlich schnell wieder auf den Boden geholt, denn bis auf die bekannte Community habe ich lediglich das Zend Framework Buch von Ralf Eggert ausfindig machen können.

Sicherlich gibt es noch einige andere Bücher zu diesem Thema, doch letztendlich konnten mich bei diesen Kandidaten die Rezensionen der anderen Leser nicht wirklich zu einem Kauf bewegen. mehr…

Namespaces in PHP 5.3.0

Abgelegt von Sascha Schoppengerd am 30.06.2009 um 15:28 Uhr

Nach fast zweieinhalb Jahren dürfen wir uns heute endlich über die Veröffentlichung von PHP 5.3.0 freuen, denn die aktuelle Generation des PHP Interpreters bringt viele Features mit, die von den Entwicklern eigentlich erst für die Version 6 vorgesehen waren.

Besonders interessant dürfte die Nutzung von Namensräumen sein, denn auf dieses Feature warte nicht nur ich persönlich schon eine ganze Zeit, denn endlich wird es möglich die selbe Bezeichung für eine Variable, Konstante oder Klasse in unterschiedlichen Namensräumen zu verwenden.

Ich brauche während meiner täglichen Arbeit in Zukunft also nicht mehr darauf achten, ob das Framework XY z.B. bereits die Klasse FooBar beinhaltet.

Einen Namensraum deklariert man direkt in der ersten Zeile der Datei mit dem Keyword: namespace. Die folgenden Bezeichnungen werden nun diesem Namensraum zugeordnet.

1
2
3
4
5
6
7
8
9
<?php
namespace myProject;
 
const DB_HOST = 'localhost';
 
class myClass {}
 
function getDatabase() {}
?>

Wenn jetzt eine Datei mit einem eigenen Namesraum in das jeweilige Projekt inkludiert wird, dann kann über den vollständig qualifizierten Namen auf die Daten zugeriffen werden:

1
2
3
4
5
echo myProject\DB_HOST;
 
$object = new myProject\myClass;
 
myProject\getDatabase();

Wenn man die ein oder andere Klasse im Verlauf des Abarbeitung öfter benötigt, kann man diese zuvor auch mittels use im jeweils lokalem Namensraum bekannt machen:

1
2
3
4
5
6
7
8
<?php
require 'example.php';
 
use myProject\myClass as FooBar;
 
$object = new FooBar;
 
?>

Die wichtigsten 10 Ressourcen für PHP Anfänger

Abgelegt von Sascha Schoppengerd am 22.01.2009 um 14:31 Uhr

Gerade wenn ich auf unseren aktuellen Workshop schaue, dann fällt einfach sehr schnell auf, dass bei vielen von euch die grundlegenden PHP Kenntnisse noch immer fehlen und so ist es natürlich auch mühsam viele Dinge zu erklären, die einfach aus Grundwissen vorhanden sein sollten.

Um dieses Problem nun ein wenig aus der Welt zu schaffen, habe ich mir gedacht, dass ich mal die 10 wichtigsten Seiten für PHP Einsteiger in einem Artikel zusammenfasse. mehr…

Krumo – Eine Alternative zu var_dump & print_r

Abgelegt von Sascha Schoppengerd am 17.09.2008 um 09:38 Uhr

Als Programmierer kommt man eigentlich täglich in die Situation, dass man ein Script nach Fehlerquellen durchsuchen muss und sofern einem hier keine professionellen Tools mit internem Debugger, wie das Zend Studio Professional zur Verfügung stehen, muss man in der Regel auf die bekannten PHP Funktionen wie var_dump() oder print_r() zurückgreifen.

Das Problem bei dieser einfachen Methode ist jedoch oftmals, dass die Ausgabe bei verschachtelten Arrays oder Objekten nur sehr schwer lesbar ist und so geht man im Alltag eigentlich dazu über, die Bildschirminformationen zusätzlich mittels HTML zu formatieren.

Ein gebräuchliches Beispiel wäre daher so aufgebaut:

1
2
3
function DebugArray($var) {
    echo "< pre >".print_r($var)."</ pre >";
}

Die pre Tags musste ich leider um entsprechende Leerzeichen erweitern, da sind mit dem WordPress – Plugin zur Darstellung von Codeabschnitten in Konflikt geraten und deshalb muß das Beispiel für den Realgebrauch natürlich entsprechend angepaßt werden.

Eine wirkliche Alternative zu dieser doch sehr einfachen Debugging – Methode habe ich kürzlich jedoch in dem OpenSource Tool Krumo gefunden, dass die PHP Variablen strukturiert und somit auch für den Entwickler lesbar auf dem Bildschirm ausgibt.

Die Krumo – Ausgabe erzeugt u.a aus mehrdimensionalen Arrays oder Objekten eine auf DHTML und CSS basierende Baumstruktur, die ihr nach belieben ein- oder ausklappen könnt. Darüber hinaus läßt sich der gesamte Baum noch mittels Skins und CSS an die individuellen Bedürfnisse jedes Anwenders anpassen.

Einige Beispiele dazu könnt Ihr euch natürlich auf der Projektseite von Krumo ansehen.

Klassen in PHP5 automatisch includieren

Abgelegt von Sascha Schoppengerd am 10.07.2008 um 08:51 Uhr

Im Blog von Marcel habe ich gestern einen interessanten Artikel zur autoload() Funktionaliät von PHP5 gelesen und daher möchte ich das Thema selbst nochmals an dieser Stelle aufgreifen.

Kurz gesagt, empfiehlt Marcel In seinem Beispiel die verschiedenen Verzeichnisse in denen sich die zu includierenden Klassen befinden, zuvor in einem Array zu speichern und dieses dann mit Hilfe einer Schleife zu durchlaufen. Bei jedem Schleifendurchlauf wird nun mittels file_exits() geprüft, ob die gesuchte Klasse vorhanden und ggf. wird diese dann ins Script includiert.

Soweit die Theorie, doch in der Praxies habe ich eben diese Vorgehensweise bereits einmal in einer easyLink Testumgebung genutzt und hier bin ich doch sehr schnell an die Grenzen gestoßen. Mit zunehmender Größe des Verzeichnis – Arrays wurde das Script messbar langsamer und daher kann ich die Lösung auch nur für kleinere Projekte empfehlen.

Bei diesen widerum macht es aber keinen Sinn, die einzelnen Klassen in x verschiedenen Verzeichnissen zu verschachteln und deshalb möchte ich euch einfach mal weitere Möglichkeit aufzeigen, die euch vielleicht helfen könnte, dass Problem zu lösen.

Die autoload() – Funktion in der aktuellen easyLink Testumgebung ist z.B. so aufgebaut:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * Ermöglicht das automatische einbinden der vom Script benötigten Klassen. 
 * 
 * @author Sascha Schoppengerd
 * @copyright by MountainGrafix <http://www.mountaingrafix.eu>
 */
function __autoload($className) {
	if (file_exists(ABSPATH.'lib/util/' . $className . '.class.php')) {
		require_once(ABSPATH.'lib/classes/' . $className . '.class.php');
	} else {
		die('Die notwendige Klasse: ' . $className . ' konnte nicht gefunden werden.');
	}
}

Ich habe also ein Verzeichnis mit dem Namen /lib/classes/ und in diesem Verzeichnis befinden sich alle Klassendateien, die sehr oft im Script benötigt werden.

Darunter fallen dann z.B. Klassen zur Bearbeitung von Strings oder auch Klassen für den HTTP Zugriff auf entfernte Webserver. Dateien, die ich hingegen nicht so oft oder nur an ganz bestimmten Stellen benötige, die verfrachte ich in ein gesondertes Verzeichnis im Ordner lib/ und binde sie anschließend ganz gewöhnlich via. require_once() ein.

Ich versuche also mit meiner Variante einen Mittelweg zwischen dem Komfort, den mir autoload() bietet und der notwendigen Performance zu finden und mit Sicherheit gibt es noch hunderte andere Lösungen, die ebenso gut funktionieren wie die Beispiele von Marcel und mir, doch letztendlich hat sich diese Vorgehensweise zumindest in easyLink bewährt.

Mehrere Array – Einträge durchlaufen

Abgelegt von Sascha Schoppengerd am 04.07.2008 um 13:32 Uhr

Heute ist mal wieder einer der Tage an denen ich mich durch den Quellcode von diverseren Wohnzimmer-Entwicklern wühlen muss und immer wieder treffe ich auf Kontrukte wie diesem:

1
2
3
4
5
$array = array('Brot','Birne','Apfel');
 
for ($i=0; $i<count ($array); $i++) {
	...
}

Eine solche Schleife ist zwar im Prinzip korrekt und funktioniert natürlich auch tadellos, aber sie ist nicht besonders performant, denn count() muß bei jedem Durchlauf des Array’s dessen Inhalt neu berechnen und das macht natürlich keinen Sinn. mehr…

HTML & PHP lernen mit Peter Kropff

Abgelegt von Sascha Schoppengerd am 06.06.2008 um 13:26 Uhr

Bücher und Tutorials zu den Themen HTML, CSS oder PHP gibt es ja haufenweise, doch alle haben sie in der Regel gemeinsam, dass sie für Einsteiger nur schwer verständlich sind und deshalb landen Sie nach dem Kauf auch Meist im verstaubten Regal.

Wenn Ihr aber auf der Suche nach wirklich guten Hilfen seit, dann solltet Ihr euch einfach mal die kostenlosen Tutorials von Peter Kropff ansehen, denn diese sind nicht nur sehr gut aufgebaut, sondern auch mit anschaulichen Beispielen dokumentiert worden:

Also, da gibt es einen Mann, nennen wir ihn “Dieter”, und der ist total scharf auf eine Frau, sagen wir mal “Dörte”. Um denn nun ihr Herz zu gewinnen (oder sie einfach nur ins Bett zu bekommen), will er sie zu einem romantischen Abendessen einladen.

In den Beiträgen findet Ihr sowohl Einsteigerinformationen in den Bereichen HTML, CSS, JavaScript und PHP, als auch einige Beiträge zu Thema “Objektorientierte Programmierung mit PHP 5“. Ich kann diese Seite wirklich nur jedem empfehlen und wenn Ihr bei dem Regen nix besseres zu tun habt, dann schaut dort einfach mal rein.