1. Trang chủ
  2. » Công Nghệ Thông Tin

PHP – Endlich objektorientiert- P12

30 312 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề PHP – endlich objektorientiert
Trường học University of Example
Chuyên ngành Computer Science
Thể loại Thesis
Năm xuất bản 2023
Thành phố Example City
Định dạng
Số trang 30
Dung lượng 429,98 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Im HTML-Teil von Listing 4.68 wird dieser Datenstrom in eine neueDatei umgeleitet, sodass letztlich eine XML-Datei im Dateisystem des Webservers ent-steht... Die geschriebene XML-Datei i

Trang 1

Wie funktioniert nun diese Hilfsklassẻ Als öffnendes XML-Element wird nur mer> betrachtet, alle anderen öffnenden Elemente werden ignoriert Den Namen des Ele-

<teilneh-ments und dessen Attribute gelangen als Input-Parameter in die Methodẹ Der ser befüllt die Parameter automatisch, sodass Sie sich darum nicht kümmern müssen

SAX-Par-Als Attribute des Elements Teilnehmer werden die Teilnehmer-ID und das Geschlecht des

Teilnehmers festgehalten Diese Attribute werden aus der XML-Datei extrahiert

Aus der ID wird der Index des Datenfelds $tn bestimmt, damit der Teilnehmer eindeutig

wiedergefunden werden kann Im Anschluss daran wird ein neues Teilnehmerobjektangelegt und dem Feld zugewiesen Abschließend wird das Geschlecht des existieren-den Teilnehmers mit dem gleichnamigen Attribut aus der XML-Datei belegt, das ebenso

wie die ID über das Feld $atts aus der XML-Datei ausgelesen wurdẹ

Wenn der Parser Text zwischen einem öffnenden und einem schließenden Element

ermittelt hat, entfernt die Methode cDatặ ) führende und folgende Leerzeichen durch die trim-Methodẹ Die Daten werden dann temporär in der Eigenschaft $daten abgelegt Die Methode ende wertet die schließenden Elemente </name>, </vorkenntnis> und </vor- kenntnisse> aus Wird das schließende Element </name> entdeckt, wird die Zeichenkette aus cDatặ ), die sich in der Eigenschaft $daten befindet, dem aktuellen Teilnehmer zuge- wiesen Beim schließenden Element </vorkenntnis> wird die ermittelte Vorkenntnis aus

$daten der Liste der Vorkenntnisse des Teilnehmers hinzugefügt Diese Liste besteht zur

Vereinfachung lediglich aus einer Zeichenkette, wobei die Vorkenntnisse durch einenHTML-Zeilenumbruch getrennt sind In einer realen Anwendung würde dafür natürlichein separates Datenfeld verwendet Ist die Liste der Vorkenntnisse in der XML-Datei durch

</vorkenntnisse> vollständig, so ist der aktuelle Teilnehmer vollständig abgearbeitet.

Nach dem Parsen steht die Liste der Teilnehmer zur Verfügung, die über die

Get-Methode getTN() abgerufen werden können.

Listing 4.66 testet den SAX-Parser von PHP Dazu werden zunächst ein Parser erzeugtund die Methoden definiert, die auf die öffnenden und schließenden Elemente sowie aufDaten innerhalb der Elemente reagieren sollen

} } function cDată$p,$data){

$daten=trim($data);

if (!empty($daten)) $this->daten=$daten;

} function getTN(){

return $this->tn;

}}

Listing 4.65: Die Hilfsklasse für den SAX-Parser (Forts.)

Trang 2

Im Anschluss daran wird ein Objekt der Hilfsklasse aus Listing 4.65 erzeugt und demParser zugewiesen.

Nun kann die XML-Datei zum Lesen geöffnet werden Es werden jeweils 1 024 Byte

aus-gelesen und dem Parser über den Befehl xml_parse zugeführt Der Aufruf der Methoden

der Hilfsklasse erfolgt automatisch über den Parser Sobald der gesamte Dateiinhaltdurch den SAX-Parser gelaufen ist, kann die Datei wieder geschlossen werden

Im HTML-Teil des Testprogramms stehen jetzt die ausgelesenen Teilnehmerdaten zur

Verfügung Das Datenfeld $tn der Teilnehmer wird über das Hilfsobjekt abgeholt und die Daten der Teilnehmer werden in der foreach-Schleife ausgegeben.

Die Ausgabe besteht aus der Teilnehmer-ID, gefolgt von dem Aufruf der

toString()-Methode jedes Teilnehmers:

} } fclose($fp);

?>

<html><body>

<?php $tn=$parserObjekt->getTN();

foreach ($tn as $index => $wert){

echo 'Teilnehmer ID '.$index.'<br>'; echo $wert;

Trang 3

Name: Ulf Schmidt Geschlecht: m Vorkenntnisse:

Grundlagen HTML Java

Teilnehmer ID 43 Name: Clair Grube Geschlecht: w Vorkenntnisse:

JavaScript

XML als Baum: DOM

Die zweite Art der Verarbeitung, die PHP 5 bietet, ist die Rekonstruktion des Baums aus den Daten der XML-Datei im Arbeitsspeicher des Servers

XML-Als Beispiel wird wiederum die XML-Datei aus Listing 4.63 verwendet Sobald die Datei

geladen wurde, stehen deren Inhalte in der Objektreferenz $doc zur Verfügung Wie Sie erkennen, ist die load-Methode eine statische Methode der Klasse DOMDocument und

$doc ein Objekt dieser Klasse, das über eine Vielzahl von Methoden verfügt, um auf die

Daten zuzugreifen

Eine dieser Methoden lautet getElementsByTagname Dabei werden alle Inhalte eines

Ele-menttyps in einer Liste zurückgegeben Im Beispiel in Listing 4.67 werden alle

Vorkennt-nisse der Teilnehmer eines Seminars in der Liste $vorkenntVorkennt-nisse gespeichert und im

HTML-Teil des Skripts nacheinander mit Zeilenumbruch ausgegeben

<?php $doc=DOMDocument::load('beispiel.xml');

$vorkenntnisse=$doc->getElementsByTagname('vorkenntnis');

?>

<html><body>

<?php echo 'Anzahl der Vorkenntnisse: '.$vorkenntnisse->length.'<br>';

Trang 4

Aus den Daten der eingelesenen XML-Datei ergibt sich dann die folgende Ausgabe:

Anzahl der Vorkenntnisse: 4 Grundlagen HTML Java

JavaScript Visual Basic 6 Die einzelnen Methoden von DOMDocument hier aufzulisten und zu beschreiben, würde

einige Seiten füllen Kein Entwickler lernt diese Methoden auswendig, sondern sucht beiBedarf die Methoden aus einer Onlinedokumentation, die ihm bei der Lösung seiner

konkreten Problemstellung behilflich sind Die bereitgestellten Dienste von ment können Sie beispielsweise unter http://de3.php.net/book.dom nachlesen Bitte achten Sie dabei auf die Endung dom, und nicht com der Homepage! Dort befinden sich auch

DOMDocu-zahlreiche Quellcodebeispiele zum Umgang mit DOM

In dem nächsten Beispiel wird die Klasse dazu verwendet, zunächst ein Objekt im Speicher des Servers aufzubauen und dieses Objekt anschließend als XML-Datei abzuspeichern

DOM-Auf diese Weise können Sie genausogut alle Eigenschaften eines Objekts über eineselbstdefinierte Methode in ein DOM-Objekt überführen, um die Persistenz des Objektssicherzustellen

In Listing 4.68 erzeugen Sie zunächst ein neues DOM-Dokument in der XML-Version 1.0mit westeuropäischem und amerikanischem Zeichensatz Das XML-Dokument soll men-schenlesbar formatiert werden, was sich insbesondere in entsprechenden Zeilenumbrü-

chen hinter den Ende-Elementen und in Einrückungen bei verschachtelten Elementen

bemerkbar macht Wenn Sie die XML-Datei ausschließlich maschinell verarbeiten, nen Sie auf die Formatierung verzichten, die Verarbeitung etwas beschleunigen und dieDateigröße leicht minimieren

kön-Jedes XML-Element wird über die DOM-Methode createElement erzeugt und mit der Methode appendChild dem DOM-Baum hinzugefügt Die Methode setAttribute definiert

den Namen und den aktuellen Wert eines Attributs in einem XML-Element Wenn Sie

createTextNode verwenden, können Sie Text hinter dem zuletzt geöffneten XML-Element

platzieren Dies ist beispielsweise bei dem Namen des Seminars der Fall

Profitipp

In einer prozeduralen Programmiersprache kann ein Entwickler nach einigen JahrenErfahrung meist die gesamte Sprache auswendig In der Objektorientierung ist diesaufgrund der Vielzahl der Klassen und Methoden für verschiedene Zwecke nichtmehr möglich Hier gilt die Regel: Sie müssen nur wissen, wo die Funktionen stehen,die Sie benötigen! Und Sie müssen so viel von der Sprache PHP beherrschen, dass Siedie Definitionen der Funktionalität verstehen und anwenden können!

Trang 5

Wenn Sie mehrere Elemente befüllen, können Sie die Methoden createElement und appendChild in einer Schleife anwenden, um beispielsweise zuvor aus einer Datenbank

ausgelesene Werte einem XML-Dokument hinzuzufügen

Die Methode saveXML speichert das DOM-Objekt nicht in einer Datei, sondern erzeugt

einen Datenstrom Im HTML-Teil von Listing 4.68 wird dieser Datenstrom in eine neueDatei umgeleitet, sodass letztlich eine XML-Datei im Dateisystem des Webservers ent-steht

<?php $dom=new DOMDocument('1.0','iso-8859-1');

// XML-Dokument zusammensetzen $seminare->appendChild($php);

if (fwrite($fh,$daten)===false){

echo 'Konnte XML-Datei nicht schreiben!';

} else{

echo 'XML-Datei erfolgreich geschrieben!';

Listing 4.68: Mit DOM eine XML-Datei schreiben

Trang 6

Die geschriebene XML-Datei ist ein vereinfachtes Beispiel der Seminardatei und wird inListing 4.69 dargestellt.

Geprüftes XML: DTD und Schema

Wie Sie in den letzten Beispielen bereits gesehen haben, können Sie die Namen der mente frei vergeben In diesem Kapitel werden Sie nun sehen, wie Sie anhand einerDokumenttypdefinition oder anhand eines XML Schemas Regeln für diese Elementevergeben können Diese Regeln werden meist in einer separaten Datei mit der Endung

Ele-.dtd bzw .xsd abgelegt.

PHP bietet Ihnen die Möglichkeit, durch das Parsen nicht nur die Wohlgeformtheit derXML-Datei sicherzustellen, sondern auch die Gültigkeit in Bezug auf einen solchen Satzvon Regeln

Um die Beispieldatei nach einer DTD mit PHP 5 prüfen zu lassen, müssen Sie zunächstdie Dokumenttypdefinition angeben, nach der Sie die Prüfung vornehmen wollen Lis-

ting 4.70 zeigt die Verbindung der beispiel.xml mit der seminare.dtd Datei Mit seminare ist

der notwendige Wurzelknoten, also das oberste Element der XML-Datei, gemeint Andieser Stelle beginnt auch die Beschreibung der Regeln innerhalb der DTD

Als Nächstes müssen in Listing 4.71 die Regeln definiert werden Die DTD ist eine eigene

Sprache mit eigener Syntax Das Wurzelelement seminare besteht aus Elementen seminar,

} fclose($fh);

Trang 7

wobei mindestens ein Seminar angegeben werden muss Dies ist an dem + im Listing zu

erkennen

Ein Seminar besteht wiederum aus genau einem Namen, genau einem Dozenten undoptional (?) aus einer Teilnehmerliste Außerdem hat ein Seminar zwangsweise eine ID.Bei dem Namen und dem Dozenten handelt es sich um beliebigen Text und/oder Zah-

len Das Format PCDATA (parsed character data) kann leider nicht genauer spezifiziert

werden, was beim Einsatz eines Schemas möglich wäre

Die Teilnehmerliste kann leer sein oder aus beliebig vielen Teilnehmern (*) bestehen.Beim Teilnehmer muss wiederum ein Name angegeben werden und keine bzw genaueine Liste von Vorkenntnissen Der Teilnehmer besitzt zwei weitere Attribute, die zwin-gend angegeben werden müssen, nämlich eine ID und das Geschlecht Über das Schlüs-

selwort #IMPLIED können Sie übrigens optionale Attribute definieren.

Die Liste der Vorkenntnisse besteht aus Elementen vom Typ Vorkenntnis Dieses Element

besteht wiederum nur aus Text, der mit Zahlen vermischt sein kann

Listing 4.72 zeigt, wie das Einlesen der XML-Datei mit anschließender Prüfung gen wird Wie gewöhnlich wird das XML-Dokument mit dem DOM-Parser aus demDateisystem des Servers in den Speicher geladen Dabei erfolgt das Prüfen auf Wohlge-

vollzo-formtheit Der Dokumentbaum kann nun über die Methode validate() des DOM-Objekts

sehr leicht auf Gültigkeit geprüft werden, Sie müssen also keine weitere rung vornehmen

Programmie-Dabei wird gegen die DTD geprüft, die in der XML-Datei angegeben wurde Die Methode liefert TRUE zurück bei einer erfolgreichen Prüfung, ansonsten FALSE.

validate-<!ELEMENT seminare (seminar+)>

<!ELEMENT seminar (name,dozent,teilnehmerliste?)>

<!ATTLIST seminar

id NMTOKEN #REQUIRED

>

<!ELEMENT name (#PCDATA)>

<!ELEMENT dozent (#PCDATA)>

<!ELEMENT teilnehmerliste (teilnehmer*)>

<!ELEMENT teilnehmer (name,vorkenntnisse?)>

<!ATTLIST teilnehmer

id NMTOKEN #REQUIRED geschlecht NMTOKEN #REQUIRED

>

<!ELEMENT vorkenntnisse (vorkenntnis+)>

<!ELEMENT vorkenntnis (#PCDATA)>

Listing 4.71: Die passende DTD

Trang 8

Wenn Sie anstelle der DTD ein XML Schema zur Prüfung Ihrer XML-Dateien verwendenmöchten, können Sie wesentlich präzisere Prüfungen vornehmen Sie können beispiels-weise Formate für Telefonnummern, Datums- und Währungsangaben oder für E-Mail-Adressen vorgeben Außerdem ist ein XML-Schema selbst eine XML-Datei mit einem

vordefinierten Satz von Elementen, ähnlich wie bei einer HTML-Datei das <h1> eine

vor-definierte Bedeutung hat, nämlich die einer Hauptkapitelüberschrift

Andererseits ist aufgrund der vielen Möglichkeiten die Sprache des XML Schemas auchdeutlich komplexer und schwieriger von einem Menschen zu lesen und zu schreiben.Listing 4.73 zeigt das entsprechende XML Schema für die Seminardatei, die noch nichteinmal wesentlich präziser ist als die DTD aus Listing 4.71 Erkennen Sie die komplexereSyntax?

Zunächst werden die XML-Elemente Dozent, Name, Vorkenntnis und Seminar vergeben.

Ein Seminar besteht aus einem Namen, einem Dozenten und einer Teilnehmerliste, diespäter definiert wird Ein Element wie das Seminar, das aus anderen Elementen besteht,

wird als „ komplexer Typ“ bezeichnet Dabei kann mit mixed="true" noch angegeben

werden, dass die in dem komplexen Typ enthaltenen Elemente in einer beliebigen henfolge angeordnet werden können

Rei-Zusätzlich besitzt ein Seminar ein Attribut ID, das stets angegeben werden muss (use="required") Die Alternative dazu ist use="optional" Mit type="xs:string" wird der

Datentyp des Attributs festgelegt XML-Schema besitzt ähnlich wie in einer miersprache die vordefinierten Datentypen

echo 'Die Datei beispiel.xml NICHT ist gültig!';

Trang 9

쮿 xs:boolean

쮿 xs:date

쮿 xs:time

Sie können sich jedoch auch weitere Datentypen definieren Im Fall des Seminars wurde

lediglich xs:string verwendet, obwohl ein Seminar stets aus dem Buchstaben S, gefolgt

von einer Zahl, besteht Die Angabe im XML Schema ist zwar korrekt, könnte aber nochpräzisiert werden, da beispielsweise andere Buchstaben als „ S“ oder weitere Buchstabennicht in der ID gestattet sind

Im nächsten Schritt definieren Sie, dass Seminare aus einer Liste von Elementen des Typs

Seminar bestehen.

Nun wird beschrieben, wie ein Teilnehmer auszusehen hat Er besteht aus einem Namen

und Vorkenntnissen, wobei Vorkenntnisse nicht zwingend erforderlich sind (minOccurs=

"0") Sie können also neben Attributen auch Elemente als optional deklarieren Zusätzlich besteht ein Teilnehmer noch aus den zwei Pflichtattributen Geschlecht und ID, die eben-

falls noch genauer spezifiziert werden könnten

Bei dem Geschlecht ist diese Spezifizierung exemplarisch vorgenommen worden Dazu

definieren Sie einen neuen Datentyp, der gesch genannt wurde Er basiert auf einer chenkette (base="xs:string"), deren Werte jedoch eingeschränkt werden Dazu wird ein regulärer Ausdruck (pattern) verwendet, der nur die Zeichen m oder w zulässt.

Zei-Ein regulärer Ausdruck ist selbst eine Zeichenkette, die als Beschreibung von Mengenvon Zeichenketten mithilfe eines eigenen, sehr komplexen und mächtigen Regelwerksdient Reguläre Ausdrücke stellen also eine Art Filterkriterium für Texte dar, indem derjeweilige reguläre Ausdruck in Form des Musters mit einem gegebenen Text aus derXML-Datei abgeglichen wird Im XML Schema wird auf diese Weise ein Filter für dieObermenge der Zeichenketten angegeben

Im Anschluss an die Definition eines Teilnehmers mit dem neuen Datentyp Geschlecht

wird in Listing 4.73 die Teilnehmerliste definiert, die aus mindestens einem Teilnehmer

(da minOccurs nicht angegeben wurde, ist die Mindestzahl automatisch 1) bis unendlich vielen Teilnehmern (maxOccurs="unbounded") besteht.

Abschließend wird noch definiert, dass die Liste der Vorkenntnisse aus mindestens einerVorkenntnis besteht Auch hier ist keine obere Grenze der Vorkenntnisse vorgesehen.Damit ist das XML-Format der Seminare ausreichend beschrieben Beachten Sie bitte,dass die Reihenfolge der Definitionen beliebig ist Sie können beispielsweise die Teilneh-merliste einsetzen, bevor das Element der Teilnehmerliste definiert wurde

Trang 10

<xs:attribute name="geschlecht" type="gesch" use="required" />

<xs:attribute name="id" type="xs:integer" use="required" />

Trang 11

Genau wie bei der Prüfung der XML-Beispieldatei anhand der DTD muss auch dasSchema auf eine XML-Datei angewendet werden In diesem Beispiel wird wieder dieXML-Datei aus Listing 4.63 verwendet Ein Hinweis auf das zugehörige Schema inner-halb der XML-Datei ist nicht notwendig.

In Listing 4.74 erfolgt nun die Prüfung auf Gültigkeit der beispiel.xml gegen das Schema seminare.xsd Nach dem Laden der XML-Datei in das Document Objekt Model erfolgt über die bereits im DOM definierte Methode schemaValidate die Prüfung unter Angabe des Schemas Diese Prüfung liefert genau wie die DTD-Prüfung im Erfolgsfall ein TRUE und andernfalls ein FALSE zurück

Sie erkennen auch hier, dass die eigentliche Prüfung leicht zu programmieren ist; diebereits von PHP 5 vorgegebenen Klassen und Objekte mit ihren Methoden nehmenIhnen die Arbeit des Parsens und der Prüfung ab Die Prüfung im Schema zu definierenist allerdings bereits komplex genug Andererseits wird das XML Schema die DTD-Spra-che mittelfristig ablösen, da das Schema selbst von einem XML-Parser interpretiert wer-den kann

echo 'Die Datei beispiel.xml NICHT ist gültig!';

Trang 12

Transformation von XML zu anderen Ausgaben: XLST

Es wurde bereits erwähnt, dass das XML-Format insbesondere dem flexiblen tausch zwischen größeren Applikationen, beispielsweise aus dem B2B-Bereich, dient.Ein Datenstamm wird also über das XML-Format von einem Datenmodell in ein anderesDatenmodell überführt Dies ist meist deshalb nötig, weil die verschiedenen Applikatio-nen verschiedene ER-Modelle ihrer Datenbanken hinterlegt haben

Datenaus-Um eine Konvertierung zwischen XML-Formaten vorzunehmen, wurde eine eigeneKonvertierungssprache entworfen, die XLST (Extensible Stylesheet Language Transfor-mation) Die XSL ist eine in XML definierte Familie von Transformationssprachen zurDefinition von Layouts für XML-Dokumente Man trennt also den reinen Datenstamm inder XML-Datei von dessen Darstellung in einer XSL-Datei XLST ist eine Transforma-tionssprache wie auch XSL-FO (Extensible Stylesheet Language – Formating Objects).Mit einer XSL-FO-Beschreibung können Sie beispielsweise eine XML-Datei in eine PDF-Datei zum Druck aufbereiten Wie die Daten aus der XML-Datei dargestellt werden sol-len, bestimmen Sie in der separaten XSL-FO-Beschreibung, ähnlich, wie Sie in einemseparaten Schema die Gültigkeit der Daten definieren

Zum Einstieg wird in diesem Kapitel eine Transformation in ein anderes XML-Formatvorgenommen Da der Befehlssatz der HTML-Sprache als Untermenge von XML aufge-fasst werden kann, können Sie die gegebene XML-Datei aus Listing 4.63 unter Verwen-dung einer XLST-Transformationsdatei direkt in eine HTML-Datei umwandeln DasPrinzip der Transformation wird in Abbildung 4.17 verdeutlicht

Listing 4.75 zeigt eine solche Transformationsdatei Sie enthält neben dem

darzustellen-den HTML-Rumpf von darzustellen-den Elementen <html> bis </html> zusätzliche Anweisungen,

wie die Daten aus der XML-Datei in die HTML-Ausgabe eingepflegt werden sollen Eine

solche Anweisung lautet beispielsweise <xsl:value-of select="seminare/seminar/name"/>.

Dadurch wird in dem Name des ersten Seminars in der XML-Datei extrahiert und andiese Stelle platziert Auf Attribute eines XML-Elements können Sie durch ein vorange-

stelltes „ @“ zugreifen So gibt <xsl:value-of select="seminare/seminar/@id"/> die ID des

Seminars zurück

Profitipp

Wenn Sie die DTD oder das Schema komplett von Hand erstellen, ist dies zwar einegute Übung, jedoch ist der Aufwand bis zu einem erfolgreichen Ergebnis gerade beigrößeren Dokumenten sehr hoch Alternativ dazu existieren bereits Tools, mit denenSie eine DTD oder ein XML Schema aus einer bestehenden XML-Datei generierenkönnen Dies ist auf den ersten Blick unlogisch, jedoch können die DTD oder dasSchema als Vorlage für eine Überarbeitung des Regelwerks dienen Eine solche

Generierung können Sie unter anderem auf der Homepage http://www.hitsw.com/ xml_utilites/ vornehmen.

Trang 13

Abbildung 4.17: Prinzip einer XSL-Transformation in ein HTML-Dokument

Da es sich bei XLST um eine eigene vollständige Programmiersprache handelt, könnenSie auch Schleifen verwenden Im Beispiel wird eine Schleife verwendet, um die Namen

aller Teilnehmer auszugeben Die Zeile <xsl:for-each liste/teilnehmer"> nimmt Bezug auf den Pfad im Baum des XML-Dokuments und erinnert gleichzeitig an die foreach-Schleife von PHP Die Namen der Teilnehmer werden dann in eine HTML-Auflistung innerhalb der HTML-Tags <li> </li> eingebettet.

<p align="left" style="font-family:Tahoma; font-size:14px;">

Name des Seminars: <xsl:value-of select="seminare/seminar/name"/><br/>

ID des Seminars: <xsl:value-of select="seminare/seminar/@id"/><br/>

Dozent des Seminars: <xsl:value-of select="seminare/seminar/dozent"/>

Trang 14

Die Aufbereitung in ein HTML-Dokument wurde mit Listing 4.75 beschrieben Nun fehlt

noch die Anwendung der Transformation Da es sich sowohl bei der beispiel.xml als auch bei der beispiel.xls um XML-Dateien handelt, werden beide zunächst als DOM-Objekt

geladen Dies geschieht in der Testdatei aus Listing 7.48

Die Transformation erfolgt über einen Transformationsprozessor, der – wie üblich in der

Objektorientierung – zunächst über den new-Operator erzeugt werden muss Sie ten dann ein Prozessorobjekt $proc mit einem Satz von eigenen Methoden/Diensten, die dieser Prozessor bereitstellt Eine dieser Methoden, importStylesheet, besteht darin, eine

erhal-Transformationsbeschreibung in den Prozessor zu laden Ein Beschreibungsobjekt steht

in der Objektreferenz $xsl bereits zur Verfügung Die Methode transformToXML

transfor-miert die im Eingabeparameter angegebene Datei nun in ein anderes Format In unseremFall wird dabei eine HTML-Datei erzeugt, die dann direkt ausgegeben wird

In der beschriebenen Kombination von XML- und XSL-Datei führt dies zu der folgendenAusgabe:

Name des Seminars: PHP5 objektorientiert

ID des Seminars: S1120 Dozent des Seminars: Dr Frank Dopatka Teilnehmer:

Trang 15

4.5 Ein Web Service in PHP

Eine besondere, verteile Art der objektorientierten Programmierung stellen Web Servicesdar Ein Web Service ist ein Dienst, also eine Methode bzw eine Funktionalität, diezumeist in einem Intranet bereitgestellt wird

Web Services orientieren sich an der serviceorientierten Architektur (SOA) und vereinenverteilte und objektorientierte Programmierstandards, wobei sie insbesondere betriebs-wirtschaftliche Lösungen fokussieren Eine Anwendung kann einen Web-Service überihren Uniform Resource Identifier (URI) eindeutig identifizieren und ihren Dienst aus-führen, der mit seinem Ergebnis antwortet

Ein besonderes Augenmerk liegt dabei auf der Kommunikation zwischen dem Nutzerdes Dienstes und dessen Anbieter Diese Kommunikation erfolgt über SOAP (SimpleObject Access Protocol) Dabei handelt es sich um ein Netzwerkprotokoll, mit dem Datenzwischen unterschiedlichen Systemen ausgetauscht und entfernte Prozeduraufrufe, sogenannte Remote Procedure Calls (RPC), durchgeführt werden können Dabei müssendie verschiedenen Systeme nicht in derselben Programmiersprache implementiert sein

So kann ein in PHP geschriebener Web Service prinzipiell von einer Java-Anwendunggenutzt werden und umgekehrt

Listing 4.77 zeigt einen ersten in PHP implementierten Web Service Dabei soll die

einfa-che Funktion addiere im Intranet bereitgestellt werden, die zwei Eingabeparameter erhält

und einen Wert als Ergebnis zurückgibt

Dazu wird zunächst ein neuer SOAP-Server instantiiert, der als Parameter die URIerhält, unter der der Server zu finden ist Im zweiten Schritt wird die zu veröffentlicheFunktion dem Server hinzugefügt Abschließend wird eine eingehende Dienstanfrage

über die Methode $server->handle() des Serverobjekts verarbeitet und die Antwort

auto-matisch an den Aufrufer des Dienstes zurückgesendet

Hinweis

Selbstverständlich kann im Rahmen dieses Buches keine vollständige Beschreibungder Sprachen DTD, Schema und XSL(T) erfolgen Zu diesem Zweck existieren bereitseine Vielzahl von Literatur sowie Internetquellen In diesem Buch sollen Sie nur dieprinzipiellen Technologien mit grundlegenden Beispielen zum Einstieg sowie denEinsatzzweck dieser Technologien kennen lernen

Ngày đăng: 08/11/2013, 02:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN