Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
429,98 KB
Nội dung
4 –PHP objektorientiert 300 Wie funktioniert nun diese Hilfsklasse? Als öffnendes XML-Element wird nur <teilneh- mer> betrachtet, alle anderen öffnenden Elemente werden ignoriert. Den Namen des Ele- ments und dessen Attribute gelangen als Input-Parameter in die Methode. Der SAX-Par- ser befüllt die Parameter automatisch, sodass Sie sich darum nicht kümmern müssen. 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 Teilnehmerobjekt angelegt 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 wurde. Wenn der Parser Text zwischen einem öffnenden und einem schließenden Element ermittelt hat, entfernt die Methode cData( .) führende und folgende Leerzeichen durch die trim-Methode. 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 cData( .), 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 einen HTML-Zeilenumbruch getrennt sind. In einer realen Anwendung würde dafür natürlich ein 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 erzeugt und die Methoden definiert, die auf die öffnenden und schließenden Elemente sowie auf Daten innerhalb der Elemente reagieren sollen. } } function cData($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.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP–Endlich objektorientiert 301 Im Anschluss daran wird ein Objekt der Hilfsklasse aus Listing 4.65 erzeugt und dem Parser 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 Dateiinhalt durch 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: Teil n ehme r ID 2 3 <?php require_once("classloader.inc.php"); ?> $parser=xml_parser_create(); xml_set_element_handler($parser,'start','ende'); xml_set_character_data_handler($parser,'cData'); $parserObjekt=new ParserKlasse(); xml_set_object($parser,$parserObjekt); $fp=fopen('beispiel.xml','r'); while($data=fread($fp,1024)){ $result=xml_parse($parser,$data); if ($result==FALSE){ die(sprintf("XML FEHLER: %s in Zeile %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } } fclose($fp); ?> <html><body> <?php $tn=$parserObjekt->getTN(); foreach ($tn as $index => $wert){ echo 'Teilnehmer ID '.$index.'<br>'; echo $wert; } ?> </body></html> Listing 4.66: Test des SAX-Parsens Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 4 –PHP objektorientiert 302 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 XML-Verarbeitung, die PHP 5 bietet, ist die Rekonstruktion des XML- Baums aus den Daten der XML-Datei im Arbeitsspeicher des Servers. 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 $vorkenntnisse 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>'; for($i=0;$i<$vorkenntnisse->length;$i++){ $kenntnis=$vorkenntnisse->item($i); echo $kenntnis->textContent.'<br>'; } ?> </body></html> Listing 4.67: Ein einfaches DOM-Parsen Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP–Endlich objektorientiert 303 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 bei Bedarf die Methoden aus einer Onlinedokumentation, die ihm bei der Lösung seiner konkreten Problemstellung behilflich sind. Die bereitgestellten Dienste von DOMDocu- 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 zahlreiche Quellcodebeispiele zum Umgang mit DOM. In dem nächsten Beispiel wird die DOM-Klasse dazu verwendet, zunächst ein DOM- Objekt im Speicher des Servers aufzubauen und dieses Objekt anschließend als XML- Datei abzuspeichern. Auf diese Weise können Sie genausogut alle Eigenschaften eines Objekts über eine selbstdefinierte Methode in ein DOM-Objekt überführen, um die Persistenz des Objekts sicherzustellen. In Listing 4.68 erzeugen Sie zunächst ein neues DOM-Dokument in der XML-Version 1.0 mit 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, kön- nen Sie auf die Formatierung verzichten, die Verarbeitung etwas beschleunigen und die Dateigröße leicht minimieren. 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 Jahren Erfahrung meist die gesamte Sprache auswendig. In der Objektorientierung ist dies aufgrund der Vielzahl der Klassen und Methoden für verschiedene Zwecke nicht mehr 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 Sie die Definitionen der Funktionalität verstehen und anwenden können! Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 4 –PHP objektorientiert 304 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 neue Datei umgeleitet, sodass letztlich eine XML-Datei im Dateisystem des Webservers ent- steht. <?php $dom=new DOMDocument('1.0','iso-8859-1'); $dom->formatOutput=TRUE; // Wurzel erzeugen: $seminare=$dom->createElement('seminare'); $dom->appendChild($seminare); // Seminar erzeugen: $php=$dom->createElement('seminar'); $php->setAttribute('id','S1120'); // Name des Seminars und des Dozenten festlegen: $name=$dom->createElement('name'); $name->appendChild($dom->createTextNode('PHP5 objektorientiert')); $php->appendChild($name); $doz=$dom->createElement('dozent'); $doz->appendChild($dom->createTextNode('Dr. Frank Dopatka')); $php->appendChild($doz); // Teilnehmer-Liste anlegen: $tn_liste=$dom->createElement('teilnehmerliste'); // Teilnehmer-Daten befüllen $php->appendChild($tn_liste); // XML-Dokument zusammensetzen $seminare->appendChild($php); $dom->appendChild($seminare); $daten=$dom->saveXML(); ?> <html><body> <?php $fh=fopen('neu.xml','wb'); 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 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP–Endlich objektorientiert 305 Die geschriebene XML-Datei ist ein vereinfachtes Beispiel der Seminardatei und wird in Listing 4.69 dargestellt. Geprüftes XML: DTD und Schema Wie Sie in den letzten Beispielen bereits gesehen haben, können Sie die Namen der Ele- mente frei vergeben. In diesem Kapitel werden Sie nun sehen, wie Sie anhand einer Dokumenttypdefinition oder anhand eines XML Schemas Regeln für diese Elemente vergeben können. Diese Regeln werden meist in einer separaten Datei mit der Endung .dtd bzw. .xsd abgelegt. PHP bietet Ihnen die Möglichkeit, durch das Parsen nicht nur die Wohlgeformtheit der XML-Datei sicherzustellen, sondern auch die Gültigkeit in Bezug auf einen solchen Satz von Regeln. Um die Beispieldatei nach einer DTD mit PHP 5 prüfen zu lassen, müssen Sie zunächst die 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. An dieser 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); ?> </body></html> <?xml version="1.0" encoding="iso-8859-1"?> <seminare> <seminar id="S1120"> <name>PHP5 objektorientiert</name> <dozent>Dr. Frank Dopatka</dozent> <teilnehmerliste/> </seminar> </seminare> Listing 4.69: Die geschriebene XML-Datei <?xml version="1.0" standalone="no"?> <!DOCTYPE seminare SYSTEM "seminare.dtd"> <seminare> <seminar id="S1120"> . Listing 4.70: Modifikation der XML-Datei für eine DTD-Prüfung Listing 4.68: Mit DOM eine XML-Datei schreiben (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 4 –PHP objektorientiert 306 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 und optional (?) 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. genau eine 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 vollzo- gen wird. Wie gewöhnlich wird das XML-Dokument mit dem DOM-Parser aus dem Dateisystem des Servers in den Speicher geladen. Dabei erfolgt das Prüfen auf Wohlge- 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 Programmie- rung vornehmen. Dabei wird gegen die DTD geprüft, die in der XML-Datei angegeben wurde. Die validate- Methode liefert TRUE zurück bei einer erfolgreichen Prüfung, ansonsten FALSE. <!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 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP–Endlich objektorientiert 307 Wenn Sie anstelle der DTD ein XML Schema zur Prüfung Ihrer XML-Dateien verwenden mö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 auch deutlich 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 nicht einmal wesentlich präziser ist als die DTD aus Listing 4.71. Erkennen Sie die komplexere Syntax? Zunächst werden die XML-Elemente Dozent, Name, Vorkenntnis und Seminar vergeben. Ein Seminar besteht aus einem Namen, einem Dozenten und einer Teilnehmerliste, die spä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 Rei- henfolge angeordnet werden können. 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 Program- miersprache die vordefinierten Datentypen xs:string xs:decimal xs:integer xs:float <?php $doc=DOMDocument::load('beispiel.xml'); ?> <html><body> <?php if ($doc->validate()){ echo 'Die Datei beispiel.xml ist gültig.'; } else{ echo 'Die Datei beispiel.xml NICHT ist gültig!'; } ?> </body></html> Listing 4.72: Prüfen der XML-Datei anhand der DTD auf Gültigkeit Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 4 –PHP objektorientiert 308 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 noch präzisiert werden, da beispielsweise andere Buchstaben als „S“ oder weitere Buchstaben nicht 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 Zei- 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. Ein regulärer Ausdruck ist selbst eine Zeichenkette, die als Beschreibung von Mengen von Zeichenketten mithilfe eines eigenen, sehr komplexen und mächtigen Regelwerks dient. Reguläre Ausdrücke stellen also eine Art Filterkriterium für Texte dar, indem der jeweilige reguläre Ausdruck in Form des Musters mit einem gegebenen Text aus der XML-Datei abgeglichen wird. Im XML Schema wird auf diese Weise ein Filter für die Obermenge 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 einer Vorkenntnis 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. <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="dozent"/> <xs:element name="name"/> <xs:element name="vorkenntnis"/> Listing 4.73: Schemadatei zur Prüfung des XML-Dokuments Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP–Endlich objektorientiert 309 <xs:element name="seminar"> <xs:complexType mixed="true"> <xs:sequence> <xs:element ref="name" /> <xs:element ref="dozent" /> <xs:element ref="teilnehmerliste" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required" /> </xs:complexType> </xs:element> <xs:element name="seminare"> <xs:complexType> <xs:sequence><xs:element ref="seminar" /></xs:sequence> </xs:complexType> </xs:element> <xs:element name="teilnehmer"> <xs:complexType> <xs:sequence> <xs:element ref="name" /> <xs:element ref="vorkenntnisse" minOccurs="0" /> </xs:sequence> <xs:attribute name="geschlecht" type="gesch" use="required" /> <xs:attribute name="id" type="xs:integer" use="required" /> </xs:complexType> </xs:element> <xs:simpleType name="gesch"> <xs:restriction base="xs:string"> <xs:pattern value="m|w"/> </xs:restriction> </xs:simpleType> <xs:element name="teilnehmerliste"> <xs:complexType> <xs:sequence> <xs:element ref="teilnehmer" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> Listing 4.73: Schemadatei zur Prüfung des XML-Dokuments (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. [...]... interpretieren kann, wie es in Listing 4.80 dargestellt ist Im Anschluss an die Interpreta- PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 317 4 –PHP objektorientiert tion der Datei kann der Client den Dienst wie einen gewöhnlichen, lokalen Methodenaufruf verwenden < ?php $client = new SoapClient('http://localhost/webservice/server.wsdl'); $result =... Microsoft-Windows-Welt Obwohl PHP auf Windows-Betriebssystemen schon lange problemlos installiert werden konnte (Stichwort WAMP-Server), ist die wesentlich höhere Verbreitung im Linux-Umfeld lange auch durch die höhere Verfügbarkeit von Linux-Servern zu erklären gewesen PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 323 4 –PHP objektorientiert Obwohl... letztlich ausgegeben wird < ?php $client = new SoapClient(NULL, array( "location" => "http://localhost/webservice/server .php" , "uri" => "urn:xmethodsTestServer", "style" => SOAP_RPC, "use" => SOAP_ENCODED )); $parameters = array( new SoapParam('10', 's1'), new SoapParam('20', 's2')); $result = $client-> call( "addiere", $parameters, array( Listing 4.78: Der erste Dienstbenutzer PHP–Endlich objektorientiert... XML-Elements können Sie durch ein vorangestelltes „ @“ zugreifen So gibt die ID des Seminars zurück PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 311 4 –PHP objektorientiert Abbildung 4.17: Prinzip einer XSL-Transformation in ein HTML-Dokument Hinweis Die XSL-Transformationsdatei aus Listing 4.75... also aus einer Kunden- und Artikelverwaltung, die ihrerseits wieder aus einer Vielzahl von Klassen und eigener Benutzeroberfläche bestehen können PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 319 4 –PHP objektorientiert Aus Sicht der Modellierung könnte aus der Kundenverwaltung noch eine Rechnungsverwaltung extrahiert werden, sodass drei Komponenten... construct(){ echo('Eine Artikelverwaltung wird erzeugt '); } } ?> Listing 4.84: Hauptklasse der Artikelverwaltung im Unterverzeichnis myERP/av PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 321 4 –PHP objektorientiert Da die Verwaltungsklassen lediglich skizziert wurden, um sich auf die Funktionsweise der Namensräume zu konzentrieren, lautet... erzeugt Eine Artikelverwaltung wird erzeugt Weitere Informationen zu den Namensräumen können Sie in der Onlinedokumentation von PHP unter http://www .php. net/manual/de/language.namespaces .php einsehen 4.6.2 Softwaremodule in PHP- Pakete bündeln: Phar Eine weitere Neuerung in PHP 5.3 wurde aus dem Java-Umfeld übernommen Bereits im vorherigen Kapitel wurde begründet, dass große Softwaremodule in Pakete... Version 5.3 hat PHP analog dazu das phar-Format eingeführt, was PHP- Archiv bedeutet Dabei stellt sich zunächst die Frage, wie Sie eine solche phar-Datei anlegen In Listing 4.85 wird aus allen Dateien der Kundenverwaltung aus Abbildung 4.18 ein PHPArchiv angelegt < ?php $phar=new Phar('kv.phar'); $phar->buildFromDirectory('myERP\kv'); ?> Listing 4.85: Erstellung eines PHP- Archivs... Ausgabe: Name des Seminars: PHP5 objektorientiert ID des Seminars: S1120 Dozent des Seminars: Dr Frank Dopatka Teilnehmer: ̈ Ulf Schmidt ̈ Clair Grube PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 313 4 –PHP objektorientiert ̈ Ulla Hansen ̈ Franz Streber ̈ Hans Wurst Auf diese Art und Weise können Sie verschiedene Transformationen, beispielsweise... sogar in Konkurrenz zu PHP steht, verstärkt Microsoft seit dem IIS 6 die Anbindung zur Sprache PHP Dies geschieht über eine FastCGI-Schnittstelle (Common Gateway Interface), die man kostenlos herunterladen kann Zusätzlich dazu bietet Microsoft finanzielle Unterstützung für das PHP- Projekt und hat angekündigt, PHP zukünftig auf allen Windows-Serverplattformen zu unterstützen Seit PHP 5.3 wurde die Unterstützung . XML-Datei nach HTML – beispiel.xls Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP – Endlich objektorientiert. purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PHP und XML PHP – Endlich objektorientiert 303 Aus den Daten der eingelesenen XML-Datei