Komponenten für PHP

PHP-Applikationen
mit PEAR

Über mich

Stefan Neufeind, aus Neuss

Zertifizierter PHP-Entwickler

PEAR-Maintainer seit 2 Jahren

Tätig für SpeedPartner GmbH

Webhosting, Serverhousing, Rackspace

Business-DSL, Einwahl/Roaming

Domains

Consulting

Entwicklung (auch PHP mit PEAR)

Agenda

Was ist PEAR?

PEAR-Pakete

PEAR installieren / Der PEAR-Installer

Neu in PEAR 1.4.x

PEAR-Beispiel

PEAR-Website

Hilfe zu PEAR

Links

Was ist PEAR?

PHP Extension and Application Repository

DAS Repository für PHP

Gegründet 1999 von Stig S. Bakken

Sammlung von hochqualitativen PHP-Komponenten

485 Paketen (stark steigend) in 41 Kategorien

252 Paket-Betreuer, 877 Entwickler

100% Open Source (Lizenzen: PHP, Apache, BSD, LGPL)

Tools für Kommunikation und Zusammenarbeit

Was ist PEAR?

Besteht aus:

Website (Präsentation, Backend für Installer, ...)

Installer (Kommandozeile, Web, GUI)

Paketen

Dokumentation

Support

Qualitätssicherung (PEAR-QA)

PEAR-Pakete

Keine Applikationen (fast keine :-) )
sondern Komponenten für einzelne Aufgaben

Datenbankabstraktion

Webservices

Internationalisierung

Netzwerk / Internet

Grafikerzeugung / -bearbeitung

Prüfroutinen (Emailadressen, IBAN, Kreditkarten, ...)

PEAR-Pakete

Komponenten universell einsetzbar

Kooperation statt konkurrierende Pakete

„Sauberes“ Design

Klare Regeln zur Qualitätssicherung und Wartbarkeit

Verwendung in zahlreichen Applikationen

Business-ready

PEAR installieren

PEAR-Installer seit PHP 4.3.0 bundled

Automatisch verfügbar, auch auf Windows :-)

Standardmäßig auch beim selbst-kompilieren aktiviert

Für frühere PHP-Versionen / Distributionen ohne PEAR
einfach von http://go-pear.org installieren

z.B. lynx -source http://go-pear.org | php -q

oder go-pear-Source speichern und im Browser öffnen

Hinweis:
PEAR-Pfad sollte im include_path (php.ini) enthalten sein

PEAR-Installer

Einheitliche Installation-Umgebung für PHP-Code (PEAR)
und C-Erweiterungen (PECL, http://pecl.php.net)

Auf vielen Plattformen lauffähig (Linux, Windows, ...)

Verschiedene Oberflächen:
Kommandozeile, Web, GUI

Verwaltung von Paket-Abhängigkeiten

Tools für Entwickler

PEAR-Installer

Installation von Paketen (z.B. Kommandozeile)
mit Überprüfung von Abhängigkeiten, Konflikten etc.:

Ermöglicht auch optionale Komponenten, Versionsabhängigkeiten, ...

# pear install Validate_Finance-alpha

Did not download dependencies: pear/Validate, use --alldeps or --onlyreqdeps to download automatically

pear/Validate_Finance requires package "pear/Validate" (version >= 0.5.0)

No valid packages found

install failed

PEAR-Installer

Installation von Paketen:

# pear install Validate-alpha

Did not download dependencies: pear/Date, use --alldeps or --onlyreqdeps to download automatically

pear/Validate can optionally use package "pear/Date"

downloading Validate-0.5.0.tgz ...

Starting to download Validate-0.5.0.tgz (9,862 bytes)

.....done: 9,862 bytes

install ok: channel://pear.php.net/Validate-0.5.0

# pear install Validate_Finance-alpha

downloading Validate_Finance-0.5.0.tgz ...

Starting to download Validate_Finance-0.5.0.tgz (5,608 bytes)

.....done: 5,608 bytes

install ok: channel://pear.php.net/Validate_Finance-0.5.0

Neu in PEAR 1.4.x

Automatische Auflösung von Abhängigkeiten

--onlyreqdeps / -o

--alldeps / -a

Abhängigkeiten auf externe Pakete

Verweise per URL

Channels

Verwendung von mehreren Channels

Möglichkeit eigenen Channel zu eröffnen

Mirroring

Neu in PEAR 1.4.x

Mehrere Module in einem Paket

Post-install-Skripte (inkl. Interaktion), z.B. für

Initialisierung Datenbanken

Dateien ins Webroot verschieben

ReST-Webservice

PHAR-Support

Nur eine PHP-Datei inkl. Archiv, dynamischem Entpacken, ...

Remote-Installation

Installation von binären PECL-Paketen (z.B. auf Windows)

PEAR-Channels

Weitere Kommandos für Channels:

pear channel-discover http://example.com/channel.xml

pear channel-alias channel://... example

pear update-channels

Channel-Beschreibung per channel.xml

# pear list-channels

Registered Channels:

====================

Channel Summary

pear.php.net PHP Extension and Application Repository

pecl.php.net PHP Extension Community Library

__uri Pseudo-channel for static packages

PEAR-Channels

pearadise.net:
Portal für
PEAR-
Channels

ReST-Webservice

PEAR <=1.3 verwendete XML-RPC für Repository-Zugriff

Etabliert, aber teilweise komplex

PEAR 1.4 verwendet ReST

Text-basiert, statische Files möglich

Weniger Traffic

Schnellere Antwortzeiten

Vereinfachte API

Wesentlich flexibler

Post-install Skripte

Ermöglichen umfangreiche Aktionen nach Installation

Sehr flexible API

Skript-Aufrufe in package2.xml definiert

Aufgaben können an bestimmte Dateien gebunden werden

Vordefinierte Aktionen verfügbar

Eigene Aktionen über PHP-Skripte implementierbar

Abarbeitung in einzelne Schritte gegliedert

Interaktion zwischen Benutzer / PEAR installer

PEAR-Beispiel

Nutzung von PEAR-Paketen,
z.B. Grapherzeugung mit PEAR::Image_Graph:

require_once 'Image/Graph.php';

// create the graph

$Graph =& Image_Graph::factory('graph', array(400, 300));

// add a TrueType font

$Font =& $Graph->addNew('font', 'Verdana');

// set the font size to 11 pixels

$Font->setSize(8);

$Graph->setFont($Font);
[...]

PEAR-Beispiel

$Graph->add(

Image_Graph::vertical(

Image_Graph::factory('title',

array('Smoothed Area Chart Sample', 12)),

Image_Graph::vertical(

$Plotarea = Image_Graph::factory('plotarea'),

$Legend = Image_Graph::factory('legend'), 90),

5)

);

$Legend->setPlotarea($Plotarea);

// create the dataset

$Dataset =& Image_Graph::factory('random',
array(10, 2, 15, true));

// create 1st plot as smoothed area chart using the 1st dataset

$Plot =& $Plotarea->addNew('Image_Graph_Plot_Smoothed_Area',
array(&$Dataset));

PEAR-Beispiel

// set a line color

$Plot->setLineColor('gray');

// set a standard fill style

$Plot->setFillColor('blue@0.2');

// output the Graph

$Graph->done();

?>

PEAR-Beispiel

PEAR-Website

Überblick über einige Dienste/Features:

Struktur des Repository (Pakete)

Paket-/Release-Verwaltung

Abstimmungstool: PEAR Proposal-System („PEPr“)

[... ausführliche Live-Demo am PEAR-Stand ...]

PEAR-Website

Struktur des Repository (Pakete)

PEAR-Website

Struktur des Repository (Pakete)

PEAR-Website

Paket-/Release-Verwaltung

PEAR-Website

Paket-/Release-Verwaltung

PEAR-Website

Abstimmungstool: PEAR Proposal-System („PEPr“)

PEAR-Website

Abstimmungstool: PEAR Proposal-System („PEPr“)

PEAR-Website

Abstimmungstool: PEAR Proposal-System („PEPr“)

Voting durch erfahrene
PEAR-Entwickler

Verwaltung abgegebener Stimmen

Paket akzeptiert ab
Summe von +5 Stimmen

Tracking von Kommentaren

PEAR-Website

Website / Präsentation

Darstellung von Komponenten / Applikationen

Verwaltung von Downloads / Releases

Mitgliederverwaltung

Verwaltung von Betreuern, Helfern, ...

Dokumentation

Verwaltung von Dokumentationen

Automatische Generierung von Dokumentation (API-docs)

Bereitstellung von versch. Formen (Sprachen, Dateiformate)

PEAR-Website

Kommunikation

Mailinglisten / Foren

Chat (z.B. IRC)

Bugtracker

Abstimmungstool: PEAR Proposal-System („PEPr“)

Versionsverwaltung (http://cvs.php.net/pear/)

Gemeinsames Arbeiten am „gleichen“ Code

Verwaltung von Versionsständen / Änderungen

Hilfe zu PEAR

PEAR Website

Paket-Website
http://pear.php.net/package/<paketname>

PEAR-Dokumentation: http://pear.php.net/manual/en/

Support-Mailingliste: pear-general@lists.php.net

IRC channel: #pear@EFNet

Direkter Kontakt zum Maintainer (siehe Paket-Website)

PEAR QA: pear-qa@lists.php.net

Links

PEAR-Website: http://pear.php.net/

PECL-Website: http://pecl.php.net/

PEAR-Dokumentation: http://pear.php.net/manual/en/

Support-Mailingliste: pear-general@lists.php.net

IRC channel: #pear@EFNet

Portal für PEAR-Channels: http://pearadise.net/

Beispiele / Screenshots für PEAR::Image_Graph:
http://pear.veggerby.dk/

Informationen zu ReST:
http://www.xfront.com/REST-Web-Services.html

Danke für Ihre Aufmerksamkeit!

Aktuelle Folien verfügbar unter:

http://talks.speedpartner.de/

Fragen?
neufeind (at) speedpartner.de

PHP-Applikationen mit PEAR, Stefan Neufeind, SpeedPartner GmbH

LinuxWorld 2005, Infobühne, Frankfurt, Germany

http://talks.speedpartner.de/

Stefan Neufeind

2005-04-26T01:21:33