PHP COMmuniziert mit Gupta



Ähnliche Dokumente
mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Anleitung zur Webservice Entwicklung unter Eclipse

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Tevalo Handbuch v 1.1 vom

Gruppenrichtlinien und Softwareverteilung

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

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

Einfügen von Bildern innerhalb eines Beitrages

Arbeiten mit UMLed und Delphi

Erstellen einer digitalen Signatur für Adobe-Formulare

SEMINAR Modifikation für die Nutzung des Community Builders

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Wie halte ich Ordnung auf meiner Festplatte?

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

5. Übung: PHP-Grundlagen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Einführung in PHP. (mit Aufgaben)

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Windows 7 Winbuilder USB Stick

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Toolbeschreibung: EVERNOTE

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

s zu Hause lesen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Registrierung am Elterninformationssysytem: ClaXss Infoline

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

OP-LOG

Fotostammtisch-Schaumburg

Anmeldung, Registrierung und Elternkontrolle des MEEP!-Tablet-PC

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Reporting Services und SharePoint 2010 Teil 1

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Zentraler Wertungsrichtereinsatz

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Lizenzen auschecken. Was ist zu tun?

Zur drittletzten Zeile scrollen

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Step by Step Webserver unter Windows Server von Christian Bartl

Leichte-Sprache-Bilder

Hex Datei mit Atmel Studio 6 erstellen

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

TeamSpeak3 Einrichten

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Aufruf der Buchungssystems über die Homepage des TC-Bamberg

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Video-Tutorial: Einrichten einer Facebook Landing Page in der Facebook Chronik (Timeline)

So die eigene WEB-Seite von Pinterest verifizieren lassen!

PHPNuke Quick & Dirty

Urlaubsregel in David

ecaros2 - Accountmanager

Tutorial -

Windows 10 > Fragen über Fragen

Anmeldung bei einem registrierten Konto (Account)

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Eigenen Farbverlauf erstellen

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Herzlich Willkommen bei der nfon GmbH

Professionelle Seminare im Bereich MS-Office

Lokale Installation von DotNetNuke 4 ohne IIS

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Bauteilattribute als Sachdaten anzeigen

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

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

Durchführung der Datenübernahme nach Reisekosten 2011

INSTALLATION VON INSTANTRAILS 1.7

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

easysolution GmbH easynet Bessere Kommunikation durch die Weiterleitung von easynet-nachrichten per nach Hause

Registrierung im Portal (Personenförderung)

etermin Einbindung in Outlook

EINFACHES HAUSHALT- KASSABUCH

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Anleitung BFV-Widget-Generator

Anbindung an easybill.de

Local Control Network Technische Dokumentation

Bedienungsanleitung für den SecureCourier

1. Einführung. 2. Weitere Konten anlegen

Ein Leitfaden für Anfänger unter Zuhilfenahme frei verfügbarer Software! (bei z.b. Google Microsoft Powertoys suchen, oder diesen Link verwenden )

Netzwerk einrichten unter Windows

Herzlich Willkommen bei der BITel!

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Java: Vererbung. Teil 3: super()

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Drägerware.ZMS/FLORIX Hessen

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Transkript:

PHP COMmuniziert mit Gupta PHP ist toll. Kein Zweifel, die Sprache PHP ist neu und hat Zukunft. Demgegenüber ist der Gupta Team Developer (GTD) schon sehr lange am Markt. Insbesondere als Abteilungssoftware hat er sich bewährt. Eine Menge spezieller Team Developer Lösungen laufen still und heimlich im Hintergrund. Wäre es da nicht sinnvoll die vorhandene Businesslogik mit PHP nutzen zu können, ohne das Rad neu erfinden zu müssen? von Thomas Wiedmann Vor gar nicht so langer Zeit war 4GL (Programmiersprache der 4. Generation) ein sogenanntes Buzzword in der IT-Szene. Der Gupta Team Developer ist eine 4GL Sprache und als solche gut für eine schnelle Softwareentwicklung. Die Firma Gupta, die damals Centura hieß, hatte während der aufkommenden Interneteuphorie versucht, die vorhandenen SQL- Windows Programme mit einem vorgeschalteten Manager (wer erinnert sich noch an Foresite?) oder später mittels WebApplication Console webfähig zu machen. Diese Strategie hat nicht den gewünschten Erfolg gebracht. Deshalb möchte ich hier eine andere Lösung vorschlagen und zwar die Modularisierung der vorhandenen Software in Komponenten. Die inzwischen häufig eingesetzte Technologie COM (Component Object Modell) von Microsoft kann hier eine Lösung bieten, um die vorhandenen Programme in die Zukunft zu retten. Der Team Developer beherrscht seit der Version 2.0 auch COM. Die WebSprache PHP ist ebenfalls unter Windows lauffähig und die COM-Fähigkeiten sind mit der Version 5.0 vollständig überarbeitet worden. Die Geschäftslogik verbleibt in Form von Klassen und Objekten im Gupta (COM-Server) und die GUI wird mit Hilfe von HTML, CSS und PHP in den Browser gebracht. In der Übersicht sieht das Ganze so aus (Bild 1). Bild 1: Übersicht über den Datenlfuß zwischen Client und Gupta COM-Server Grundlagen Bevor wir so richtig loslegen, möchte ich noch schnell die notwendigen Module vorstellen, auf denen der Artikel und die Beispiele basieren. 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 1

Windows 2000 Apache 1.3.8 PHP 5.0.1 Gupta Team Developer v2.1 Wie Sie sehen, es sind nicht die allerneuesten Versionen der jeweiligen Software nötig, um das angedachte Konzept in die Realität umzusetzen. Um ans Ziel zu kommen sind erst einmal keine Investitionen nötig. Also keine schlechte Voraussetzung für einen Testballon. COM together Hello World Beginnen möchte ich mit dem Gupta Team Developer. Um einen ersten Eindruck von der Technik zu bekommen, geht es mit dem berühmten Hello World - Beispiel los. Um einen Gupta COM Server zu erstellen, wählen Sie unter den Wizards den COM Class Wizzard als CoClass Komponente aus. Als Name der neuen CoClass empfiehlt sich Application (Bild 2). Bild 2: Mit Hilfe des Gupta COM Class Wizard eine neue CoClass erzeugen Aus der CoClass mit dem Namen Application liefert der Wizard zusätzlich ein sogenanntes Interface IApplication. Wie Sie später sehen können, entspricht so ein Interface nahezu den bekannten Functional Classes. In der Terminologie spricht man hier auch von Methoden. Anschließend geht es mit [Next] weiter. 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 2

Bild 3: Zwei Funktionen (Set/Get) sind hinzugekommen. Mittels [Add] sind zwei Funktionen oder Methoden hinzugekommen. Das Property User kann nun der CoClass übergeben und abgeholt werden. Alternativ dazu können auch per Karteireiter Properties solche Set/Get Methoden (Funktionen) erzeugt werden. Als Methodenname wird dann PropGet- bzw. PropSetUser mit einer passenden Instanzvariablen erzeugt. Welche Methode Sie wählen bleibt Ihnen überlassen, aber generell können Sie davon ausgehen, dass Sie nicht alle Properties in dem Wizard anlegen werden, sondern später den größten Teil direkt im GTD kodieren werden. Der COM Class Wizard soll nur die Möglichkeiten aufzeigen. Jetzt noch [Next] und [Finish] anklicken und fertig ist die erste CoClass (Bild 4). Bild 4: Der generierte Code der neuen CoClass von HelloWorld.app Manuell ergänzt habe ich jetzt noch die Instanz Variable i_suser sowie die jeweiligen 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 3

Zuweisungen in den Funktionen Set- bzw. GetUser. Damit ist der erste Gupta COM Server auch schon fertig. Im nächsten Schritt muß er nun Windows bekannt gemacht, also registriert werden. Dazu muß zuerst das Programm erzeugt werden. Unter dem Menüpunkt Project / Build Settings.. (Bild 5) muß noch die Einstellung Target Type angepaßt werden, damit nicht ein Standard EXE, sondern ein sogenannter Local COM Server (EXE) erstellt wird. Bild 5: Build Settings einstellen auf - Local COM Server (EXE) Sie sehen, es gibt mehrere Möglichkeiten. Ein Local COM Server (EXE) läuft in einem eigenen Adressraum und stört im Fehlerfalle keine andere Applikation auf dem Server. Die Variante In-Proc COM Server (DLL) läuft im selben Adressraum, wie das aufrufende Programm (PHP bzw. Apache). Die sichere Lösung ist somit der Local COM Server (EXE). Nun kann über Project / Build: HelloWorld.exe das Programm erzeugt werden. War dies erfolgreich, fehlt noch die eingangs besprochene Registrierung. Dies wird einfach mit dem Menüpunkt Project / Register Server erledigt. Sehen Sie jetzt noch die Bestätigung: Component successfully registered dann haben Sie es geschafft. Der neue COM Server ist registriert. PHP gibt das Kommando.. Nun ist es an der Zeit, sich um die PHP Seite zu kümmern. Für das erste Beispiel ist kein Apache-WebServer notwendig. Das PHP-Skript wird direkt in der Kommandozeile ausgeführt. Wenn PHP lauffähig ist und der Gupta COM-Server korrekt registriert ist, sollte das Ergebnis wie folgt aussehen. Übrigens, für COM benötigen Sie keine zusätzlichen PHP Extension in der php.ini einrichten. Unter Windows ist COM ein Teil des sogenannten PHP core. Ausführen auf Kommandoebene: D:\Test>php HelloWorld.php Hallo, PHP ist willkommen<br> D:\Test> 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 4

Das PHP-Skript HelloWorld.php wird dem Interpreter (php.exe) als Parameter übergeben und ausgeführt. Das Skript übergibt dem COM.-Server den Text»PHP«(Set) und holt den Wert (Get) wieder ab. Anschließend wird das Ganze per echo angezeigt. Das komplette Skript sieht so aus: HelloWorld.php: <?php * PHP COMmuniziert mit Gupta * * HelloWorld.php PHP 5.0.1 * (c) 18.04.2005 Thomas Wiedmann http://www.twiedmann.de $suser = ''; * ein Gupta Objekt erzeugen $ogupta = new COM("HelloWorld.Application"); * Wert an den Server übergeben und wieder abholen $ogupta->setuser('php'); $suser = $ogupta->getuser(); echo 'Hallo, '.$suser.' ist willkommen<br>'; * zum guten Schluß aufräumen $ogupta = null; unset($ogupta);?> Der interessanteste Teil ist der Befehl $ogupta = new COM("HelloWorld.Application"). Damit wird eine neue Instanzvariable $ogupta des Gupta COM-Servers HelloWorld.Application erzeugt. Damit haben wir nun Zugriff auf alle exportierten Methoden. Beispielsweise wird per $ogupta->setuser('php') der Wert»PHP«übergeben und anschließend wieder abgeholt. Der Inhalt der Variable wird schlußendlich ausgeben. Klappt alles wie erhofft, entsteht der schöne Satz»Hallo, PHP ist willkommen«. Ist die Party vorbei, wird aufgeräumt. So auch hier. Es genügt (ab PHP 5) die Instanzvariable $ogupta auf null zu setzen und mit unset() freizugeben. Sie sehen, das komplette Beispiel ist sehr einfach gehalten, enthält aber alle wesentlichen Teile, um weitere Versuche zu starten. Feiertagsberechnung Wann ist Ostern? Als Basis für den nächsten Schritt eignet sich ein älteres Beispiel (GetFeiertage.zip [1]) von meiner Centura Downloadseite, dass ich vor einigen Jahren erstellt habe. Da voraussichtlich auch in den nächsten Jahren Ostern nicht abgeschafft werden wird, lohnt es sich die Funktion als Grundlage für eine schicke Kalenderfunktion. Zum Glück habe ich früher die Feiertagsberechnung [1] bereits als Functional Class konzipiert, somit ist eine weitergehende Nutzung sehr einfach möglich. Um den Programmcode innerhalb eines COM-Servers zu nutzen, brauchte ich nur die Klasse per Copy/Paste in das neue Programm PHP_Gupta_COMmunication.apt zu kopieren (Bild 6), das ich ebenfalls analog dem obigen Beispiel - per COM-Class Wizard erstellt habe. 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 5

Bild 6: Der Code der Feiertagsberechnung wird als neue Functional Class fcgetfeiertag eingefügt. Folgendes ist jetzt zu beachten: Die Functional Class fcgetfeiertag liegt ausserhalb dem Interface IApplication, wird also folglich später beim Registrieren nicht veröffentlicht. Dies erfolgt nur bei der Methode oder Funktion GetOstern. Warum? Sie gehört zu der übergeordneten CoClass Application und nur die dahinter liegenden Methoden werden veröffentlicht. Damit GetOstern() Zugriff auf die Feiertagsberechnung bekommt, vererben wir die ganze Functional Class in Form der Instance Variable icgetfeiertag. War doch ganz einfach, oder? Innerhalb GetOstern() ist nur folgender Code notwendig: Function: GetOstern Set ldtostern = icgetfeiertag.calcostern(p_nyear) Return ldtostern Es erfolgt eine Parameterübergabe p_nyear, welches das gewünschte Jahr für die Osterberechnung enthält. Der Rückgabewert von CalcOstern() ist vom Datentyp Date/Time. Nun wenden wir uns wieder der PHP Seite zu. Vergessen Sie aber nicht das Gupta- Programm zu erstellen (Build: PHP_Gupta_COMmunication.exe) und zu registrieren. Wenn Sie das Programm mehrfach ändern und diverses ausprobieren, muß der COM-Server (das EXE) zuerst per Un-Register Server abgemeldet werden, bevor ein neues Register Server erfolgen kann. Eindeutige Dispatch Number Wenn Sie innerhalb dem IApplication Interface»von Hand«neue Funktionen (Methoden) programmieren möchten, müssen Sie auch manuell für eine eindeutige Dispatch Number sorgen. Zum Teil ist die GUI bereits so intelligent die Dispatch Number für eine neue Funktion eindeutig zu vergeben, aber unter gewissen Umständen klappt dies nicht immer. 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 6

PHP_Gupta_COMmunication.apt: Function: GetOstern Description: Attributes Dispatch Number: 1 Help String: Help Context: 0 Jede Methode oder Function eines Interface trägt eine Dispatch-ID eine Kennziffer, die die Methode eindeutig identifiziert. Die Dispatch ID oder - Number darf somit nicht doppelt vergeben werden. PHP feiert Ostern Im nächsten Schritt geht es wieder um PHP. Diesmal nicht nur um die Kommandozeile, sondern um ein vollständiges Formular zur Abfrage und Anzeige des Ostersonntags. Auch eine Eingabevalidierung wird gezeigt. Genau das, was im harten Praxisbetrieb zwingend notwendig ist (Bild 7). Voraussetzung dafür ist ein lauffähiger Apache Server und PHP läuft als sogenanntes Apache-Modul. Bild 7: Datenabfrage und Berechnung von Ostern im Web (PHP_Gupta_COMmunication.php) Mit PHP, etwas HTML und CSS habe ich Ihnen ein schönes Formular zusammen gestellt. Im Eingabefeld»Jahr«wird die Jahreszahl eingegeben, zu dem der Ostersonntag berechnet werden soll. Innerhalb des PHP-Skript wird der Eingabewert ausgewertet und auf seinen Wertebereich geprüft. Das Ausgabefeld»Ostersonntag«ist per HTML Attribut readonly für Eingaben gesperrt. Mit etwas CSS wird zudem der Hintergrund analog des Gupta Befehls SalDisableWindow () grau dargestellt. Ich denke, damit fühlen Sie sich als Gupta- Programmierer beinahe wie zu Hause. Formular versenden und Daten auswerten Bleibt noch der [Berechnen..] Knopf. Wird darauf geklickt, sendet der Browser die Seite zurück an den Server, dort werden die Inhalte geprüft. Anschließend wird die Seite neu zusammengestellt und komplett an den Browser zurück geschickt. Die inhaltliche Prüfung findet somit serverseitig statt. Aber keine Angst, all das geht ziemlich schnell. Denken Sie beispielsweise mal an die Reaktionszeit von Google. 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 7

PHP_Gupta_COMmunication.php * Werteübergabe und Prüfung nach [Submit] wenn php.ini: register_globals = Off steht, was zu empfehlen ist if (isset($_post["jahr"])) { $nyear = (INT) $_POST["jahr"]; if (($nyear >= 1900) and ($nyear <= 2099)) { /* gültiger Bereich } else { $nyear = 2005; } } if (isset($_post["ostersonntag"])) { $sostern = $_POST["ostersonntag"]; } * ein Gupta Objekt erzeugen (Instanz erzeugen) $ogupta = new COM("PHP_Gupta_COMmunication.Application"); * Wert an den Server übergeben und wieder abholen $sostern = $ogupta->getostern($nyear); Die Datenübergabe innerhalb dem PHP-Skript erfolgt mit der vordefinierten Array-Variable $_POST. Gefüllt wird $_POST aus der sogenannten HTTP_POST Variablen. Die Post Variablen (die Eingabefelder) sind per Formular mit der action method= post an den Server geschickt worden. Noch ein Wort zur Modularität: Die Verarbeitung (das PHP-Skript) und die GUI (das HTML-Formular) ist im Source schön voneinander getrennt, was generell anzustreben ist. Was nun noch fehlt, ist der HTML Teil. Das notwendige Formular baut sich wie folgt auf: PHP_Gupta_COMmunication.php <h2>php COMmuniziert mit Gupta</h2> <form method="post" action="<?php echo $_SERVER['PHP_SELF']?>" accept-charset="iso-8859-1, ISO-8859-2"> <legend>ostersonntag berechnen</legend> Jahr : <input type="text" name="jahr" size="5" maxlength="4" class="edit" value="<?php echo $nyear?>" > Ostersonntag : <input type="text" name="ostersonntag" size="10" maxlength="10" class="disable" value="<?php echo $sostern?>" readonly="readonly"> <input type="submit" name="submit" value="berechnen.." > </form> Für all die, die noch kein HTML kennen und können sieht dies bestimmt ziemlich verworren aus, aber keine Angst, bei genauerer Betrachtung klärt sich das eine oder andere. Die fünf wichtigsten Dinge für das Verständnis habe ich fett und unterstrichen markiert. method= post Beschreibt die Art, wie die Formulardaten zum Server kommen. POST (im Formular), GET per URL Variable. action= <?php.. Das Formular wird an sich selbst zum Auswerten verschickt. Es ruft sich quasi sebst auf. Ein eingebettetes PHP-Miniskript liefert dazu den eigenen Skriptnamen des HTML Dokumentes. name= jahr Name des Eingabefeldes Jahr : 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 8

name= ostersonntag Name des (readonly) Eingabefeldes = Ostersonntag : type= submit Der Sendeknopf Berechnen.. als Sonderform eines Eingabefeldes In dieser Technik liegt die ganze Weisheit zum Arbeiten mit Formularen begraben. Wenn Sie diese Grundlagen verstanden haben, ist alles weitere reine Fleißarbeit. Wobei mir klar ist, dass ich Ihnen hier andernfalls einiges an Hausaufgaben aufgehalst habe. Das ist mir zu Beginn auch so gegangen. Aber wie heißt es so schön: Erfolg ist 10% Inspiration und 90% Transpiration. PHP 5 COM Exceptions Mit der Version 5 von PHP haben die Entwickler auch das sogenannte Exception Handling integriert. Mit try und catch ist es nun möglich, eventuelle»fatale«fehler von COM abzufangen und einen kontrollierten»abgang«zu programmieren. PHP_Gupta_COMmunication_try_catch.php: * ein Gupta Objekt erzeugen (instanziieren) try { $ogupta = new COM("PHP_Gupta_COMmunication.test"); // Fehler * Wert($nYear) an den Server übergeben und Ergebnis($sOstern) abholen $sostern = $ogupta->getostern($nyear); * zum guten Schluß aufräumen $ogupta = null; unset($ogupta); } * COM Exception abfangen und analysieren catch (com_exception $exception ) { echo "COM exception ist aufgetreten: file=".$exception->getfile(). " in Zeile (".$exception->getline().")<br>\n"; echo "Fehlernachricht : ".$exception->getmessage()."<br>\n"; die(); } Obiges Beispiel kann nicht korrekt ausgeführt werden, da die Methode...test nicht existiert. Mittels catch wird der Fehler abgefangen und eine ausführliche Fehlermeldung ausgegeben. COM exception ist aufgetreten: file=d:\test\php_gupta_communication_try_catch.php in Zeile (25) Fehlernachricht : Failed to create COM object `PHP_Gupta_COMmunication.test': Ungültige Syntax Sicherheit und Zugriffsrechte? Mit dem kleinen aber feinen Programm habe ich gezeigt, wie es möglich ist, die Web- Sprache PHP und die»rich-client«software von Gupta zur Zusammenarbeit zu bewegen. Als Bindeglied dient COM, das Komponentenmodell von Microsoft. Die notwendigen Programme (Apache, PHP, COM-Server) sind auf einem Windows-Server installiert. Um jetzt einem (externen) Client also dem Browser die notwendigen Zugriffsrechte zu geben, sind Anpassungen mit dem Programm DCOMCNFG.EXE (auf dem Server) notwendig (Bild 8). 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 9

Bild 8: Notwendige Einstellungen bei der Zugriffsicherheit mit DCOMCNFG.EXE Nachdem DCOMCNFG.EXE gestartet ist, muß auf der Karteikarte»Anwendungen«der Eintrag»PHP_Gupta_COMmunication.Application«gesucht werden. Anschließend auf [Eigenschaften] klicken. Unter»Sicherheit«muß das selbe Benutzerkonto zugewiesen werden, unter dessen Konto auch der Apache-Server läuft. Dies gilt für alle drei Auswahlfelder unter»sicherheit«. Weiterhin muß unter der Karteikarte»Identität«die Auswahl»Benutzer, der die Anwendung startet«ausgewählt werden. Nach dem Speichern und einem Neustart des Apache sollte der Zugriff nun möglich sein. Fazit Anhand des gezeigten Beispiels ist schnell klar geworden, was die Verbindung PHP und Gupta zu leisten in der Lage ist. Mit COM als Klebekitt können Sie innerhalb der Windowswelt mit relativ geringem Aufwand bestehende Lösungen nutzen und in Ihr Intranet integrieren. Ich nenne hier bewußt das Intranet, denn der Ausgangspunkt waren ja die mit viel Mühen programmierten Abteilungslösungen. Literatur [1]: Feiertagsberechnung: c't 18/1988 S.191 Abkürzungen und Links Apache Apache Web-Server (http://www.apache.org) COM Component Object Model (http://www.microsoft.com/com/resources/comdocs.asp) CSS Cascading Stylesheets (http://www.w3.org) HTML HyperText Markup Language (http://de.selfhtml.org/) PHP Hypertext Preprocessor (http://www.php.net) 24.04.2005 by Thomas Wiedmann http://www.twiedmann.de 10