PHP Erweiterungen PEAR & DB-Interfaces - Template-Engines



Ähnliche Dokumente
PHP Erweiterungen PEAR & DB-Interfaces - Template-Engines

Interaktive Webseiten mit PHP und MySQL

Grundlagen der Informatik 2

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Lokale Installation von DotNetNuke 4 ohne IIS

Installationsbeschreibung Flottenmanager 7.1

ONET: FT-NIR-Netzwerke mit zentraler Administration & Datenspeicherung. ONET Server

Tutorial Windows XP SP2 verteilen

ISA Server 2004 Protokollierung - Von Marc Grote. Die Informationen in diesem Artikel beziehen sich auf:

Das Content-Management-System OpenCms im Vergleich mit TYPO3 und Joomla. Seminarvortrag von Wolfgang Neuß

Sehr geehrte Faktor-IPS Anwender,

Administrator-Anleitung

Graphen in Apex von Thomas Hernando.

Benachrichtigungsmöglichkeiten in SMC 2.6

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

f Link Datenbank installieren und einrichten

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Zugriff auf Daten der Wago über eine Webseite

Planung für Organisation und Technik

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Installationsanleitung dateiagent Pro

MEHRWERK. Folienbibliothek, Folienmanagement, Folienverwaltung

3 Windows als Storage-Zentrale

Installation von NetBeans inkl. Glassfish Anwendungs-Server

RIZIV INAMI - LIKIV. eid-anleitung für PC

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade

Backend

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Internet Explorer Version 6

Informatik 12 Datenbanken SQL-Einführung

Man liest sich: POP3/IMAP

HINWEISE ZUR ARBEIT IM LABOR

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Datenbanksysteme SS 2007

Administrator Handbuch

Wiederherstellen der Beispieldatenbanken zum Buch Microsoft Project 2010

Mapbender3 Workshop. Christian Wygoda. FOSSGIS Dessau 2012

quickterm Systemvoraussetzungen Version: 1.0

Hinweise zur Installation von MySQL

desk.modul : WaWi- Export

Architektur des agimatec-validation Frameworks

InfoPoint vom 9. November 2011

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Erfahrungsbericht Installation von OpenOffice.org2 auf Terminalservern mit Citrix Metaframe

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

DOKUMENTATION PASY. Patientendaten verwalten

quickterm Systemvoraussetzungen Version: 1.0

Task: Nmap Skripte ausführen

AJAX Implementierung mit Joomla!

Browserbasiertes, kollaboratives Whiteboard

Installationsanleitung Laurus Projekte System (Aufgaben / Projekte mit Gantt Chart)

STRATO Mail Einrichtung Mozilla Thunderbird

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Für die c-entron Versionen gilt immer: aktuellste Version aus dem Download-Bereich verwenden!. 3. isuite Outlook GFI Max Connector...

ADDISON tse:nit Hinweise zum Datenumzug im tse:nit Umfeld

So nutzen Sie die HiDrive App mit Ihrem Android Smartphone

Safexpert Installation Verteilung als MSI-Paket über das Active Directory (Microsoft SCCM)

SyMobile Installationsanleitung

Installationsanleitung für. SugarCRM Open Source. Windows Einzelplatz

Demopaket FDFsolutions für Windows, Version 1.73, Voraussetzungen & Installation. (Stand )

datenfabrik. Validieren von -Adressen 1

Für die Bearbeitung von MySQL-Datenbanken ist das Administrationswerkzeug phpmyadmin integriert.

SharePoint Demonstration

teamsync Kurzanleitung

Django - ein Python Web-Framework

PostFinance Modul. Installationsanleitung. Module version: 1.0 OXID versions: 4.6.x 4.8.x/5.1.x. Copyright Tarkka.ch /8

Updatehinweise für die Version forma 5.5.5

Anwendungsbeispiel zu XML -MathML

Konzept zur Migration Joomla auf Version 3.x

STRATO Mail Einrichtung Android 4.4

TIMERATE AG Tel Falkenstrasse Zürich Joomla Templates Kursunterlagen

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Prozedurale Datenbank- Anwendungsprogrammierung

4D Server v12 64-bit Version BETA VERSION

Python SVN-Revision 12

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

NetMan Desktop Manager Vorbereitung und Konfiguration des Terminalservers

Herzlich willkommen im Modul Web-Engineering

4D v11 SQL Release 6 (11.6) ADDENDUM

BitDefender Client Security Kurzanleitung

Installationshilfe VisKalk V5

Installation Wawi SQL in Verbindung mit Microsoft SQL Server 2008 R2 Express with management Tools

Installation und Inbetriebnahme von Microsoft Visual C Express

STRATO Mail Einrichtung Microsoft Outlook

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Installation der SAS Foundation Software auf Windows

Kurzanleitung zu XML2DB

HTML5 HOCKEYSTICK EXPANDABLE BANNER v1.0

mysoftfolio360 Handbuch

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

Transkript:

Vorlesungsreihe Entwicklung webbasierter Anwendungen PHP Erweiterungen PEAR & DB-Interfaces - Template-Engines Prof. Dr.-Ing. Thomas Wiedemann email: wiedem@informatik.htw-dresden.de HOCHSCHULE FÜR TECHNIK UND WIRTSCHAFT DRESDEN (FH) Fachbereich Informatik/Mathematik Gliederung Für komplexe Aufgabenstellungen im Bereich der webbasierten Datenverarbeitung sind einige größere Zusatzmodule oder Frameworks entstanden. Bei der Verwendung sind ggf. aktuelle Versionen zu analysieren und neue Module zu evaluieren. PEAR / PECL Template-Engines Quelle(n) : www.selfphp.de www.php.net www.php.de... Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 2 1

PEAR Einführung & Historie PHP Extension and Application Repository (PEAR) : (pear.php.net) ist eine Sammlung von Modulen und Erweiterungen für PHP (ähnlich der CPAN-Bibliothek für PERL oder SWING-Framework in JAVA) Entw. seit 2001 durch Stig S. Bakken, seit 2003 Verwaltung durch PEAR Group. Motivation / Ziele : Opensource-Referenzimplementierungen zu Webprogr.-Standardaufgaben, welche nach einheitlichen Standards erstellt, weiterentwickelt und getestet werden damit (meist) höhere Codequalität als eigenentwickelter Code, wiederverwendbare Basisobjekte und Pakete zur Redundanzminimierung im Code, Technische Parameter : (http://pear.php.net/packages.php) ca. 480 Packages in 38 Kategorien <- 350 Package-Verwalter / 2500 Entwickler Installation mit PEAR-Installer (mit Kontrolle von Abhängigkeiten in den genutzten Paketen, aufwändige Qualitätsabstimmung mit PEAR Proposal- System ( PEPr ), Internetlink zum Installer : http://pear.php.net/go-pear PECL-Bibliothek Parallel-Bibliothek implementiert unter C/C++ http://pecl.php.net/ verwendet gleiche Installationstools, teilweise performanter, aber weniger Module Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 3 PEAR Module Module (ca. 450 Pakete, engl. packages) Hauptgruppen : Authentifizierung von Benutzern Automatisiertes Caching von Webseiten Verschiedene Datenbankzugriffsmodule Verschlüsselung l Internationalisierung (Translator, Sprachversionsverwaltung) Konfiguration Grafikgenerierung (z.b. Barcodes, 3D-Grafiken...) Payment-Module HTML-Generierung und Prüfung (Tidy) Web Services XML-RPC und XML Neu: PEAR-Channels : Verteilte Portal-Website zum Management von PEAR-Channel-Server Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 4 2

Pear -Bsp. 1 - HTML_QuickForm HTML_QuickForm ist eine Bibliothek zum Handling von HTML-Formularen Unterstützung von Javascript and server-side-validation Bsp.-Quelle : http://pear.php.net/manual/en/package.html.html-quickform.php <?php // Load the main class require_once 'HTML/QuickForm.php'; // Instantiate the HTML_QuickForm object $form = new HTML_QuickForm('firstForm'); // Set defaults for the form elements $form->setdefaults(array( 'name' => 'Joe User' ))// Add some elements $form->addelement('header', null, 'QuickForm tutorial example'); $form->addelement('text', 'name', 'Enter your name:', array('size' => 50, 'maxlength' => 255)); $form->addelement('submit', null, 'Send'); // Define filters and validation rules $form->applyfilter('name', 'trim'); $form->addrule('name', 'Please enter your name', 'required', null, 'client'); // Try to validate a form if ($form->validate()) { echo '<h1>hello, '. htmlspecialchars($form- >exportvalue('name')). '!</h1>'; exit; } // Output the form $form->display();?> Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 5 Bsp. 2 - Image Generierung Zeichnung beliebiger Grafiken mit Image_Canvas <?php require_once 'Image/Canvas.php'; $Canvas =& Image_Canvas::factory('png', array('width' => 400, 'height' => 300)); $Canvas->setLineColor('black'); $Canvas->rectangle(array('x0' => 0, 'y0' => 0, 'x1' => 399, 'y1' => 299)); $Canvas->setGradientFill(array('direction' => 'horizontal', 'start' => 'red', 'end' => 'blue')); $Canvas->setLineColor('black'); $Canvas->ellipse(array('x' => 199, 'y' => 149, 'rx' => 50, 'ry' => 50)); $Canvas->setFont(array('name' => 'Arial', 'size' => 12)); $Canvas->addText(array('x' => 0, 'y' => 0, 'text' => 'Demo -> what Image_Canvas do!')); $Canvas->addText(array('x' => 199, 'y' => 295, 'text' => '[Changing format is done by changing 3 letters]', 'alignment' => array('horizontal' => 'center', 'vertical' => 'bottom'))); $Canvas->addVertex(array('x' => 50, 'y' => 200)); $Canvas->addVertex(array('x' => 100, 'y' => 200)); $Canvas->addVertex(array('x' => 100, 'y' => 250)); $Canvas->setFillColor('red@0.2'); $Canvas->polygon(array('connect' => true)); $Canvas->image(array('x' => 398, 'y' => 298, 'filename' => './pearicon.png', 'alignment' => array('horizontal' => 'right', 'vertical' => 'bottom'))); $Canvas->show();?> Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 6 3

Bsp. 3 - Database- Abstraction Layer MD2 PEAR-Modul zur Unterstützung verschiedener Datenbanken (u.a. Oracle, Postgres, MSSQL,... ) Connect zu einer Postgres-Datenbank : require_once 'MDB2.php'; p; $dsn = 'pgsql://someuser:apasswd@unix(/tmp)/thedb'; options = array( 'debug' => 2, 'portability' => MDB2_PORTABILITY_ALL, ); $mdb2 =& MDB2::factory($dsn, $options); if (PEAR::isError($mdb2)) { die($mdb2->getmessage()); } Zusätzliche Methoden zum Manipulieren (hier Zeilen-Limit ) (Quelle: http://pear.php.net/manual/en/package.database.mdb2.intro-query.php) $sql = "SELECT * FROM clients"; $mdb2->setlimit(20, 10); // read 20 rows with an offset of 10 $affected =& $mdb2->exec($sql); Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 7 Alternativen zur herkömmlichen MYSQL-Anbindung Datenbankanbindung allgemein MySQL als die Hauptdatenbank von PHP (andere DB möglich, aber durch notwendige Anpassungen bis zu 50% langsamer...) MYSQLi -»MySQL improved«objektorientierte Anbindung von MySQL (keine Ändrg. an DB selbst erlaubt Zugriff auf neue Funktionen in in MySQL 4.1 und 5. MySQLi ist deutlich performanter als die Standard-MySQL-Erweiterung Keine Abwärtskompatibilität zur alten MySQL-Anbindung wesentliche Vorteile im Überblick: Multi-Query-Ausführung Prozedurale und objektorientierte Syntax Einfache Erweiterung durch PHP und C Transaktions- und Load-Balancing-Steuerung Debugging und optimiertes Error-Handling Verbesserte Verbindungsunterstützung, durch SSL verschlüsselte Verbindungen, Datenkomprimierung via gzip u. a. Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 8 4

Alternativen zur herkömmlichen MYSQL-Anbindung Beispiel zu MySQLi <?php // Verbindungs-Objekt samt Zugangsdaten festlegen @$db = new mysqli("localhost", "root", "", "testbank"); if (mysqli_connect_errno()) { // Verbindung überprüfen printf("verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); exit(); } $befehl = $db->query("select version() AS version"); // SQL-Befehl ausführen $resultat = $befehl->fetch_object(); // Antwort in ein Objekt übergeben // MySQL-Version aus dem Resultat-Objekt auslesen echo "Wir arbeiten mit MySQL-Version {$resultat->version}"; // Verbindung zum Datenbankserver beenden $db->close();?> Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 9 Weitere Alternativen zur MYSQL-Anbindung SQLite einfache Datenbankfunktionalität auf Dateibasis benötigt keinen getrennt laufenden DB-Server (günstig für PHP auf Provider- Server, da durch Datei-Upload installierbar ) sehr schnell bei Leseoperationen, langsam (und durch Gesamt-Lock kritisch) bei vielen Schreiboperationen wird von vielen Programmen im Hintergrund zur Datenspeicherung eingesetzt (Firefox, Apple Mail,... ) AdoDB Anbindung in Richtung Microsoft s s ADO-Schnittstelle e wird aber bereits bei PEAR nicht mehr gepflegt PEAR-Systeme - PEAR::DB / PEAR::MDB2 Datenbankinterfaces aus dem PEAR-System Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 10 5

PEAR Verschiedenes... Universelles Payment-Modul - pear.php.net/package/payment_process $card = & Payment_Process_Type::factory('CreditCard'); if (!PEAR::isError($card)) { // (hier mit Kreditkarte) $card->type = PAYMENT_PROCESS_CC_VISA; $card->invoicenumber = 112345145; $card->customerid = 1461264151; $card->cardnumber = '411111111111'; $card->expdate = '01/2005'; $card->zip = '48197'; $card->cvv = '768'; $result = Payment_Process_Type::isValid($card); if (!PEAR::isError($result)) {... // Bearbeitung der Kartenprüfung... Ausgabe von Text als Sprache (http://pear.php.net/package/text_spell_audio ) require_once 'Text/Spell/Audio.php'; $options = array('distort' => 1); $a = new Text_Spell_Audio($options); $a->output('abc123#'); /* Output wav file 'abc123# */ Ausgabe einer Barcode-Grafik <?php require_once 'Image/Barcode.php'; Image_Barcode::draw('1234', 'int25', 'png');?> Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 11 Template Engines unter PHP Allgemein Bei normaler PHP-Programmierung wird HTML-Code und PHP-Programmlogik gemixt Probleme beim Design komplexer Seiten durch bruchstückhaften HTML-Code, welcher mit HTML-Autorensystemen schlecht wartbar ist Zielstellung Trennung der Präsentationsebene von der Programmlogik Lösungsansatz: Erstellung einer HTML-Template-Datei, welche mit Platzhaltern gefüllt wird (an sich altes Prinzip - vgl. erste Beispiele zur Client-Server-Prog. aus der Mitte der 90iger Jahre mit Coldfusion o..) Verfügbare Technologien (unter PHP) Smarty-Engine Diverse andere Template-Engines VLIb, TBS (bzw. Eigenentwicklungen) Vergleich : -> http://lamp.clausvb.de/index/menuid/145 Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 12 6

Template Engines - Smarty Allgemein Smarty ist eine Open-Source Template-Engine für PHP. relativ hohe Geschwindigkeit : Vorlagen-Dateien werden eingelesen und es werden neue PHP-Scripte generiert werden, die temporären PHP-Scripte werden bei einem erneuten Seitenaufruf direkt von PHP geparst und dann an den Client geschickt. dadurch auch Vorteile auch bei Compiler-Cache Lösungen (ZEND) Optional kann Smarty auch den HTML-Output zwischenspeichern (starke Einsparungen bei statischen DB-Anfragen) Kritik an Smarty Die Trennung von Logik und Präsentation wird nicht strikt eingehalten so werden IF-Bedingungen doch wieder im HTML-Code kodiert... Bei sehr komplexen Seiten keine wesentlichen Einsparungen bei der Entwicklung ggf. eher Problem mit Details... Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 13 Template Engine - Smarty - Beispiel 1 Ablage des HTML-Codes in der Datei tab1.tpl table> <tr> <td>name: {.. $name..} Vorname: {.. $first_name..} </td> </tr> </table> (Einmalige) PHP-Code mit Smarty-Anbindung und Analyse der Datei <?php require_once( once('/smarty/libs/smarty.class.php php'); $my_smarty = new Smarty(); $my_smarty->security = true; $my_smarty->secure_dir = '/templates'; $my_smarty->compile_dir = '/smarty_cache'; $my_smarty->left_delimiter = '{..'; $my_smarty->right_delimiter = '..}'; $my_smarty->debugging = false;?> PHP-Code mit Variablenzuweisung und Templateanalyse <?php $my_smarty->assign('name', $name); my_smarty->assign('first_name', tom ); // oder $first_name); $template->display('tab1.tpl');?> Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 14 7

Template Engine - Smarty - Beispiel 2 mit if then Ablage des HTML-Codes in der Datei tab2.tpl <p style="color: {if $color == "purple"} purple {else} gray {/if}"> This text is gray without "color" set. Click <a href="tmpl_if.php?color=purple">here to set "color"</a> to make it purple.</p> <p style="font font-size: 1.5em 5em"> if_condition: > {$if_condition}<</p> {if $if_condition == 1} <p style="color: green">"if_condition" is equal to 1.</p> {elseif $if_condition > 5} <p style="color: red">"if_condition" is more than 5.</p> {else} <p>smarty ELSE is used, when "if_condition" is not 1 or more than 5, to set it <a href="tmpl p_ if.php?if p _condition=10"> o click here</a>.</p> {/if} PHP-Code mit Variablenzuweisung und Templateanalyse <? $smarty->assign('color', $_GET['color']); $smarty->assign('if_condition', $_GET['if_condition']); $smarty->display( tab2.tpl ); Entwicklung webbasierter Anwendungen - HTW Dresden - Folie 15 8