Aug 25
Etwas verspätet doch mit Freude habe ich den Blogeintrag von Stephan Elter über die Vorteile des Einsatzes von Objektorientierter Programmierung (OOP) mit PHP gelesen. Da ich Java und PHP in etwa zur gleichen Zeit gelernt habe, konnte ich die Vorzüge beider Sprachen gut miteinander vergleichen. Auf der einen Seite die leichte Lernkurve von PHP. Auf der anderen Seite Java, mit seiner durchgängigen Objekt Orientierung.
Die Lernkurve der OOP ist für Entwickler, die mit prozeduraler Programmierung begonnen haben sicherlich etwas schwieriger und Spass macht OOP auch erst mit einer guten Entwicklungsumgebung (wie Eclipse). Doch hat man die Objektorientierung erst einmal verstanden und verinnerlicht, möchte man sie nicht mehr missen. So geht es zumindest mir.
Das wichtigste von OOP sind die Konzepte, wie z.B.:
- Kapselung von Daten
- Vererbung
- Überladung
- Polymorphismus
Danach kommt die Syntax für die OOP der jeweiligen Programmiersprache, die in PHP sicherlich gewöhnungsbedürftiger ist (man denke nur an __construct() für einen Konstruktor), als in Java. Doch dafür gibt es Tutorials. Das beste deutschsrpachige Tutorial ist die online Ausgabe des Buches:
Professionelle Softwareentwicklung mit PHP 5
Objektorientierung. Entwurfsmuster. Modellierung. Fortgeschrittene Datenbankprogrammierung.
von Sebastian Bergmann.
Doch nichts hilft besser, als learning by doing.
Etwas verspätet doch mit Freude habe ich den Blogeintrag von Stephan Elter über die Vorteile des Einsatzes von Objektorientierter Programmierung (OOP) mit PHP gelesen. Da ich Java und PHP in etwa zur gleichen Zeit gelernt habe, konnte ich die Vorzüge beider Sprachen gut miteinander vergleichen. Auf der einen Seite die leichte Lernkurve von PHP. Auf der anderen Seite Java, mit seiner durchgängigen Objekt Orientierung.
Die Lernkurve der OOP ist für Entwickler, die mit prozeduraler Programmierung begonnen haben sicherlich etwas schwieriger und Spass macht OOP auch erst mit einer guten Entwicklungsumgebung (wie Eclipse). Doch hat man die Objektorientierung erst einmal verstanden und verinnerlicht, möchte man sie nicht mehr missen. So geht es zumindest mir.
Das wichtigste von OOP sind die Konzepte, wie z.B.:
Kapselung von Daten
Vererbung
Überladung
Polymorphismus
Danach kommt die Syntax für die OOP der jeweiligen Programmiersprache, die in PHP sicherlich gewöhnungsbedürftiger is
Ähnliche Artikel:
geschrieben von gklinkmann
\\ tags: php
Nov 08
Weiter geht’s in der Reihe “weekly links”. Dies waren meine Highlights in der letzten Woche:
- Linux auf dem IBM Thinkpad
- Notebooks von IBM oder dem Nachfolger Lenovo eignen sich besonders gut für Linux. Hier ist eine kurze Anleitung für Kubuntu 9.10, wie man das Notebook zum Stromsparen überredet und noch mehr Sondertasten in Betrieb nimmt.
- Closure Tools – Google Code
- Die Google Online Tools nutzen alle ausgiebig Javascript. So ist es nicht verwunderlich, dass Google jetzt seinen Javascript Compiler, eine Bibliothek für DOM Manipulation und UI Elemente, sowie Templates für Javascript und Java unter dem Namen Closure Tools auf Google Code zur freien Nutzung bereitstellt. Ich freue mich schon auf die ersten Vergleiche mit der Yahoo UI Bilbliothek.
- Technische Kurzdokumentationen von Torsten Horn
- Ich stehe auf technische Kurzdokumentationen (Tutorials), besonders wenn sie die Qualität wie die von Torsten Horn aufweisen.
- Continuous Integration für PHP mit dem Hudson
- Testen macht nur Sinn, wenn die Tests regelmäßig durchgeführt werden. Hier ist ein Artikel, wie man PHP Tests in Hudson integriert.
- google-maps-icons
- Freie Icons kann man als Webentwickler nie genug haben. Hier ist eine große Auswahl, die Google bereitstellt.
- PDF-Erzeugung mit dem Zend Framework
- Die viel genutzte PHP Bibliothek FPDF zur Erzeugung von PDF Dokumenten gerät bei komplexen Layouts schnell an ihre Grenzen. Dieser Artikel beschreibt eine Alternative mit Zend, die über den Umweg von Office Templates auch komplexe PDF Strukturen ermöglichen soll.
Weiter geht's in der Reihe "weekly links". Dies waren meine Highlights in der letzten Woche:
Linux auf dem IBM Thinkpad
Notebooks von IBM oder dem Nachfolger Lenovo eignen sich besonders gut für Linux. Hier ist eine kurze Anleitung für Kubuntu 9.10, wie man das Notebook zum Stromsparen überredet und noch mehr Sondertasten in Betrieb nimmt.
Closure Tools - Google Code
Die Google Online Tools nutzen alle ausgiebig Javascript. So ist es nicht verwunderlich, dass Google jetzt seinen Javascript Compiler, eine Bibliothek für DOM Manipulation und UI Elemente, sowie Templates für Javascript und Java unter dem Namen Closure Tools auf Google Code zur freien Nutzung bereitstellt. Ich freue mich schon auf die ersten Vergleiche mit der Yahoo UI Bilbliothek.
Technische Kurzdokumentationen von Torsten Horn
Ich stehe auf technische Kurzdokumentationen (Tutorials), besonders wenn sie die Qualität wie die von Torsten Horn aufweisen.
Continuous Integration für PHP mit dem H
Ähnliche Artikel:
geschrieben von gklinkmann
\\ tags: Ajax, hardware, Java, JavaScript, Linux, php, tutorial, Ubuntu
Oct 27
Der Urlaub ist vorbei – leider. Ein wenig verspätet, aber dafür mehr an der Zahl kommen die “weekly links”:
- jQuery-Accessible-RIA – (barrierefreies jquery)
- AJAX Frameworks und Barrierefreiheit sind momentan noch 2 Dinge, die nicht so recht miteinander vereinbar sind. Dass es auch anders geht, zeigt dieses auf GitHub gehostete Projekt.
- Symfony Components – Standalone libraries for PHP
- Symfony ist eines dieser schönen neuen Frameworks für PHP. Das Projekt hat ein paar Komponenten zur Verfügung gestellt, die sich auch ohne Installation des kompletten Frameworks nutzen lassen. Ich bin schon gespannt, auf den angekündigten Request Handler.
- PHPUnit mittels PTI in Eclipse einbinden
- Eine Anleitung, um das Testing Framework PHPUnit in Eclipse einzubinden.
- SystemRescueCd
- Die Rettungs CD mit vielen nützlichen Tools, wenn der PC mal Probleme machen sollte.
- Raphaël—JavaScript Library for svg and vml
- Eine Javascript Bibliothek zur Erzeugung von Grafiken und Charts im SVG und VML (Microsoft) Format. Sehr sehenswert.
Der Urlaub ist vorbei - leider. Ein wenig verspätet, aber dafür mehr an der Zahl kommen die "weekly links":
jQuery-Accessible-RIA - (barrierefreies jquery)
AJAX Frameworks und Barrierefreiheit sind momentan noch 2 Dinge, die nicht so recht miteinander vereinbar sind. Dass es auch anders geht, zeigt dieses auf GitHub gehostete Projekt.
Symfony Components - Standalone libraries for PHP
Symfony ist eines dieser schönen neuen Frameworks für PHP. Das Projekt hat ein paar Komponenten zur Verfügung gestellt, die sich auch ohne Installation des kompletten Frameworks nutzen lassen. Ich bin schon gespannt, auf den angekündigten Request Handler.
PHPUnit mittels PTI in Eclipse einbinden
Eine Anleitung, um das Testing Framework PHPUnit in Eclipse einzubinden.
SystemRescueCd
Die Rettungs CD mit vielen nützlichen Tools, wenn der PC mal Probleme machen sollte.
Raphaël—JavaScript Library for svg and vml
Eine Javascript Bibliothek zur Erzeugung von
Ähnliche Artikel:
geschrieben von gklinkmann
\\ tags: Ajax, eclipse, ide, JavaScript, Linux, php, Web, windows
Oct 19
Während ich mich im ersten Teil in meiner kleinen Serie über HTTP Clients mit Pear beschäftigt habe, will ich nun im 2. Teil mein Augenmerk auf das Zend Framework richten.
Auch hier benötigt man 2 Packages zur Erledigung der Aufgabe (s. Teil 1). Das Package Zend_Http ist wie das Pear Package Http_Request2 zur reinen HTTP Kommunikation geeignet.
Mit Zend_Dom kann man das empfangene HTML zerlegen.
Ein Weg zur Lösung der Aufgabe könnte so aussehen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| <?php
require_once 'Zend/Http/Client.php';
require_once 'Zend/Http/Response.php';
require_once 'Zend/Dom/Query.php';
$url='http://www.google.de';
$client = new Zend_Http_Client($url, array(
'maxredirects' => 0,
'timeout' => 30));
try {
$response = $client->request('GET');
if (200 == $response->getStatus()) {
$dom = new Zend_Dom_Query($response->getBody());
$forms = $dom->query('form');
$form=$forms->current();
$action=$form->getAttribute('action');
$client = new Zend_Http_Client($url.$action, array(
'maxredirects' => 0,
'timeout' => 30));
$client->setParameterGet('q', 'http client examples');
$response = $client->request('GET');
$dom = new Zend_Dom_Query($response->getBody());
foreach ($dom->query('a.l') as $link) {
if ($link->hasAttribute('href')) {
$href=$link->getAttribute('href');
$linkText=$link->textContent;
echo "<a href=\"$href\">$linkText</a><br />";
}
}
} else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->responseCodeAsText();
}
} catch (Zend_Http_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
?> |
Der Code spricht eigentlich für sich, deswegen werde ich ihn an dieser Stelle nicht so detailliert erläutern wie noch im ersten Teil.
Der Unterschied besteht im Parsen des HTML’s. Die Methode query() (Zeilen 18 und 31) liefert nämlich kein Array, sonder ein Objekt der Klasse Zend_Dom_Query_Result zurück. Da diese Klasse die beiden Interface Countable und Iterator implementiert, können die Ergebnisse der Anfrage mit einer foreach Schleife durchlaufen werden. Jeder einzelne Treffer wird über ein Objekt der Klasse DOMElement abgebildet.
Fazit:
Auch Zend bietet mit Zend_Http und Zend_Dom einen guten HTTP Client. Nutzt man in seinem Projekt bereits andere Klassen aus dem Zend Framework ist dieser Lösungsansatz empfehlenswert.
Ausblick:
In Teil 3 verlasse ich die PHP Welt und stelle mit HttpUnit einen sehr komfortablen und funktionsreichen HTTP Client für Java vor.
Serie:
Teil 1 - Pear
Während ich mich im ersten Teil in meiner kleinen Serie über HTTP Clients mit Pear beschäftigt habe, will ich nun im 2. Teil mein Augenmerk auf das Zend Framework richten.
Auch hier benötigt man 2 Packages zur Erledigung der Aufgabe (s. Teil 1). Das Package Zend_Http ist wie das Pear Package Http_Request2 zur reinen HTTP Kommunikation geeignet.
Mit Zend_Dom kann man das empfangene HTML zerlegen.
Ein Weg zur Lösung der Aufgabe könnte so aussehen:
Der Code spricht eigentlich für sich, deswegen werde ich ihn an dieser Stelle nicht so detailliert erläutern wie noch im ersten Teil.
Der Unterschied besteht im Parsen des HTML's. Die Methode query() (Zeilen 18 und 31) liefert nämlich kein Array, sonder ein Objekt der Klasse Zend_Dom_Query_Result zurück. Da diese Klasse die beiden Interface Countable und Iterator implementiert, können die Ergebnisse der Anfrage mit einer foreach Schleife durchlaufen werden. Jeder einzelne Treffer wird über ein Objekt der Kla
Ähnliche Artikel:
geschrieben von gklinkmann
\\ tags: frameworks, php, Web