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
812,88 KB
Nội dung
2 – Die Sprache PHP: Prozedural 90 Abschließend kapselt der erste Teil der DBzugriff.inc.php die Funktion DB_error die MySQL-Funktion mysql_error, bei der detailliertere Angaben über die letzte Fehlermel- dung beim Datenbankzugriff ausgegeben werden können. Sie fragen sich vielleicht, aus welchem Grund eine einzelne Funktion in einer anderen Funktion mit allgemeinerem Namen verpackt wird. Der Grund dafür liegt darin, dass alle Funktionen, die einen Bezug zum MySQL-Server haben, ausschließlich in einer einzelnen Datei abgelegt sein sollen. Das bildet die Datenzugriffsschicht. Ihre Anwendung verwendet dann diese Datei, um wiederum Funktionen der Fachlogik verwenden zu können: Profitipp In diesem Buch wird als Benutzer stets root ohne Kennwort vergeben. Das ist aus Gründen der Sicherheit natürlich nicht akzeptabel und darf lediglich zu Testzwecken verwendet werden. Mit diesen Benutzerrechten können bei einer manipulierten Ein- gabe in das Skript ganze Tabellen gelöscht werden, unter anderem auch die Tabelle der möglichen Benutzer des MySQL-Servers. Auf diese Weise kann also der gesamte Datenbankserver lahmgelegt werden. Oder ein Angreifer kann Zugriff auf persönli- che Daten nehmen, die nach dem Datenschutzgesetz nicht zugreifbar sein dürften. Die Verwendung von Administratorrechten für diese Zugriffe stellt dann eine fahr- lässige Handlung dar, bei der Sie als Programmierer unter Umständen haftbar gemacht werden können. <?php function DB_open(){ $DB_Host="localhost"; $DB_Benutzername="root"; $DB_Passwort=""; $DB_Name="boerse"; $OK=@mysql_connect($DB_Host,$DB_Benutzername,$DB_Passwort); if (!$OK) return FALSE; else{ if (@mysql_select_db($DB_Name)==1){ return TRUE; } else{ return FALSE; } } } function DB_close(){ @mysql_close(); } function DB_error(){ return @mysql_error(); } Listing 2.67: Einzubindende Datei DBzugriff.inc.php, erster Teil Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP–Endlich objektorientiert 91 Die für die Fachlogik interessanten Funktionen des Datenzugriffs werden im zweiten Teil der DBzugriff.inc.php realisiert. Dabei werden drei Dienste angeboten, die Daten aus der Datenbank auslesen: DB_AGs() liest alle Aktiengesellschaften aus der Datenbank und gibt die Namen als Datenfeld von Zeichenketten zurück. DB_MW($AG) liefert den Mittelwert aller Börsenkurse einer Aktiengesellschaft, deren Name als Parameter übergeben wird. DB_Kurs($AG,$tag) gibt einen einzelnen Aktienkurs der einzugebenden Aktienge- sellschaft an einem bestimmten Tag aus. Alle drei Dienste verwenden den PHP-Befehl mysql_query, der eine Zeichenkette als Parameter erhält. Diese Zeichenkette enthält einen SQL-Abfragebefehl, der mit SELECT beginnt. Im Anschluss daran werden die Spalten aus der Datenbank angegeben, die man in der Ausgabe verwenden möchte. Das teilweise eingesetzte Schlüsselwort DISTINCT sorgt dafür, dass keine Datensätze im Ergebnis doppelt vorhanden sind. Der FROM-Teil eines SQL-Befehls gibt den Namen der Datenbanktabelle an, aus der man Daten auslesen will. Durch Angabe eines WHERE-Teils kann das Ergebnis eingeschränkt werden. So gibt der Befehl SELECT ID FROM ag WHERE name='".$AG."'" nur die ID einer Aktiengesell- schaft zurück, deren Name gleich dem Namen des Parameters $AG ist. Da die Namen als Zeichenkette abgespeichert werden, muss der Parameter im SQL-Befehl in Hochkom- mata gesetzt werden. Mit dem Zusatz ORDER BY sortieren Sie das Ergebnis nach einer oder mehreren Spalten, im Fall der Funktion DB_AGs() nach der ID, und zwar in aufstei- gender Reihenfolge. Die aufsteigende Reihenfolge wird mit ASC (engl.: ascending) fest- gelegt. Eine absteigende Reihenfolge könnten Sie mit DESC (engl.: descending) angeben. Die Funktion DB_MW($AG) zeigt, dass Sie mehrere SQL-Befehle schachteln können. Mit dem inneren SELECT-Befehl holen Sie sich die ID zu einem gegebenen Namen einer Aktiengesellschaft. Diese ID wird als Einschränkung in der WHERE-Klauses beim Zugriff auf eine andere Datenbanktabelle verwendet, da Sie ja nur den Mittelwert einer Aktiengesellschaft mit dieser angegebenen ID berechnet haben wollen. Grundlegende Funktionen wie eine Addition oder eine Mittelwertberechnung kann der Datenbankser- ver selbst durchführen. MySQL bietet hier die Funktion avg(value) an, die den Mittelwert direkt als Ergebnis ausgibt. In allen Fällen befindet sich das Ergebnis der SQL-Abfrage in einer lokalen Variablen namens $data. Das Ergebnis einer SQL-Abfrage wird als Resultset bezeichnet. Nun müs- sen Sie dieses Ergebnis auswerten. Dazu bietet PHP einige Befehle an. Mit mysql_fetch_array wird eine Zeile nach der anderen als Datenfeld zurückgegeben. Mit der Angabe von MYSQL_ASSOC wird ein assoziatives Feld erzeugt. Aus der Daten- banktabelle ag mit ID=5 und name=BMW ergeben sich die Feldelemente $datensatz[ID]=5 und $datensatz[name]=”BMW”. Dieses Datenfeld kann dann von der Fachlogik weiter verarbeitet werden. Auch mit dem Befehl mysql_fetch_row holen Sie eine Zeile aus der Ergebnistabelle. Bei der Mittelwertberechnung ist lediglich ein einziger Wert in der Ergebnistabelle. Die Zeile wird über mysql_fetch_row ermittelt und liefert ein numerisches Datenfeld mit einem ein- Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 2 – Die Sprache PHP: Prozedural 92 zigen Element. Dieses Element wird abschließend über return $datensatz[0]; zurückgege- ben. Ein weiterer, häufig verwendeter Befehl ist mysql_num_rows, der die Anzahl der Daten- sätze in der Ergebnistabelle zurückgibt. Diese Zahl kann als Zähler für Schleifen oder als Indiz für die Anzahl der ermittelten Datensätze verwendet werden: Im nächsten Schritt werden kurz die typischen SQL-Befehle vorgestellt, die bei einem Datenbankzugriff verwendet werden. Wenn Sie den SQL-Befehlssatz ausführlich lernen wollen, empfehlen sich Onlinequellen. Im Referenzhandbuch zu MySQL ist beispiels- function DB_AGs(){ $data=@mysql_query("SELECT ID,name FROM ag ORDER BY ID ASC"); if ($data==FALSE) return FALSE; $data_ausgabe=Array(); while ($datensatz=@mysql_fetch_array($data,MYSQL_ASSOC)){ $data_ausgabe[]=$datensatz; } return $data_ausgabe; } function DB_MW($AG){ $data=@mysql_query("SELECT avg(value) FROM kurse WHERE AG_ID = ("."SELECT DISTINCT ID FROM ag WHERE name='".$AG."'".")"); if ($data==FALSE) return FALSE; $datensatz=@mysql_fetch_row($data); return $datensatz[0]; } function DB_Kurs($AG,$tag){ // AG_ID holen $data=@mysql_query("SELECT DISTINCT ID FROM ag WHERE name='".$AG."'"); if ($data==FALSE) return FALSE; if (@mysql_num_rows($data)!=1) return FALSE; $datensatz=@mysql_fetch_row($data); $AG_ID=$datensatz[0]; // Börsenwert holen $data=@mysql_query("SELECT DISTINCT value FROM kurse WHERE AG_ID=".$AG_ID); if ($data==FALSE) return FALSE; $datensatz=@mysql_fetch_row($data); return $datensatz[0]; } ?> Listing 2.68: Einzubindende Datei DBzugriff.inc.php, zweiter Teil Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP–Endlich objektorientiert 93 weise unter http://dev.mysql.com/doc/refman/5.1/de/select.html die formale Syntax der SELECT-Anweisung beschrieben. Daran lässt sich nachvollziehen, dass allein zur Spra- che SQL eigene Bücher verfasst werden können. Bedenken Sie dabei, dass es sich dabei um eine eigene Sprache handelt. Der Vorteil ist, dass SQL unhabhängig von der verwen- deten Programmiersprache und sogar relativ unabhängig von der verwendeten Daten- bank ist. Wenn Sie also einmal den SQL-Befehlssatz beherrschen, sind sie auch für andere Programmiersprachen und Datenbanken gut gerüstet. Ein weiteres wichtiges Merkmal für Datenbanken ist die Möglichkeit, Transaktionen durchzuführen. Dabei wird eine Reihe von Zugriffen auf die Datenbank entweder ganz oder gar nicht ausgeführt. Das ist sinnvoll, wenn mehrere Benutzer gleichzeitig Ände- rungen an einem einzigen Datenstamm durchführen können. Im folgenden Beispiel wird der Ausschnitt eines Quellcodes skizziert, der eine Kontobu- chung tätigt. Dabei soll ein Betrag von 100 Euro umgebucht werden. Das soll aber nur möglich sein, wenn das Quellkonto noch positives Guthaben besitzt. Das Problem liegt darin, dass generell bei mehreren hintereinander programmierten Datenbankabfragen nicht garantiert werden kann, dass diese ohne Unterbrechung auch hintereinander ausgeführt werden. Ein anderes Skript kann stets zwischen zwei Zugrif- fen auf die Datenbank den Datenstamm manipulieren. So kann ein Betrag mehrfach von einem Konto abgebucht werden mit der Wirkung, dass jedes Skript für sich zwar lokal gesehen korrekt funktioniert, der Kontostand letztlich jedoch negativ ist. Befehl Beschreibung CREATE DATABASE shop; legt eine neue Datenbank auf dem Server an CREATE TABLE kunde ( ID bigint(20) NOT NULL auto_increment, nachname varchar(30) NOT NULL, vorname varchar(30) NOT NULL, P RIMARY KEY (ID)); legt eine neue Tabelle an, wobei zuvor eine Datenbank ausge- wählt werden muss; in diesem Beispiel werden zwei Felder mit Datentyp varchar und 30 Zeichen angelegt, die befüllt werden müssen; zusätlich existiert eine ID, die automatisch vergeben wird und die den Primärschlüssel der Tabelle darstellt DROP DATABASE alt; löscht eine existierende Datenbank mitsamt aller Tabellen und Daten INSERT INTO kunde (nachname,vorname) VALUES (’Dopatka’,’Frank’); fügt einen neuen Datensatz zu einer existierenden Tabelle hinzu; dabei müssen die Namen der Spalten angegeben werden, die zu befüllen sind sowie die Daten, die den neuen Datensatz bilden UPDATE kunde SET nachname=’Maier’ WHERE nachname=’Dopatka’ ändert/aktualisiert Datensätze in einer Tabelle, die dem Krite- rium in der WHERE -Klausel entsprechen SELECT * FROM kunde WHERE vorname=’Frank’ LIMIT 20 liest Spalten aus der angegebenen Tabelle aus (*entspricht allen Spalten) und beschränkt die Ausgabe durch Einträge, die der WHERE -Klausel entsprechen (hier: nur Leute mit dem Vor- namen Frank zurückgeben; zusätzlich kann noch ein Limit angegeben werden (hier: max. 20 Einträge zurückgeben) Tabe lle 2.27: Typische SQL-Befehle Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 2 – Die Sprache PHP: Prozedural 94 Der Ausschnitt in Listing 2.69 zeigt, wie Sie mehrere SQL-Abfragen zu einer Transaktion bündeln. Dazu müssen Sie die SQL-Befehle START TRANSACTION und BEGIN abset- zen. Alle folgenden Kommandos an die Datenbank können nicht durch andere Zugriffe auf dieselben Daten unterbrochen werden. Die Folge der Kommandos wird entweder mit COMMIT vollständig oder mit ROLLBACK gar nicht ausgeführt. So verhindern Sie, dass Ihr Datenstamm inkonsistent wird. Damit Transaktionen funktionieren, müssen Sie Tabellen vom Typ InnoDB oder BDB verwenden. Der standardmäßig eingestellte Tabel- lentyp MyISAM unterstützt bei MySQL keine Transaktionen. Dafür sind die Zugriffe auf diese Tabellen jedoch schneller, da kein aufwendiges Transaktionsmanagement berück- sichtigt werden muss: Zusätzlich zu den SQL-Befehlen, die als Zeichenketten auf den Datenbankserver abge- setzt werden, sollten Sie die gängigen PHP-Befehle zum Umgang mit MySQL-Daten- bankverbindungen kennen. Diese werden in Tabelle 2.28 kurz vorgestellt. mysql_query("START TRANSACTION"); mysql_query("BEGIN"); mysql_query("UPDATE konto SET stand=stand-100 WHERE nummer=4711"); mysql_query("UPDATE konto SET stand=stand+100 WHERE nummer=4712"); // das SELECT wird hier auf Daten angewendet, // die sich noch nicht “endgültig” in der Datenbank befinden: $res=mysql_query("SELECT stand FROM konto WHERE nummer=4711"); $stand=mysql_result($res,0,0); if ($stand<0){ mysql_query("ROLLBACK"); } else{ // erst jetzt werden die Daten wirklich geschrieben! mysql_query("COMMIT"); } Listing 2.69: Ausschnitt aus einem PHP-Quellcode mit Transaktionen Befehl Beschreibung $erg=mysql_connect ($host,$user,$pass) verbindet sich mit einem MySQL-Server unter Angabe von Benutzername und Kennwort; der Erfolg wird als Wahrheitswert zurückgegeben mysql_close($db) schließt eine geöffnete Verbindung zu einem MySQL-Server $erg=mysql_error() liefert den Fehlertext des zuvor ausgeführten MySQL-Befehls $erg=mysql_errno() liefert die Fehlernummer des zuvor ausgeführten MySQL-Befehls $res=mysql_list_dbs() gibt die Datenbanken des MySQL-Servers als Resultset zurück; das Result- set kann u. a. über $data=mysql_fetch_array($res) zeilenweise zurückge- geben und mit echo $data[Database] ausgegeben werden Tabel le 2.28: PHP-Befehle für den Zugriff auf eine MySQL-Datenbank Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP–Endlich objektorientiert 95 Die Datenzugriffsschicht der Beispielanwendung ist in der Datei DBzugriff.inc.php reali- siert und diskutiert worden. Im zweiten Schritt muss nun ein HTML-Frontend erstellt werden, über das Sie die Dienste aufrufen können. Dieses Formular besteht aus zwei Textfeldern zur Eingabe einer Aktiengesellschaft sowie eines Tages und zusätzlich aus drei Schaltflächen, diee die drei Dienste repräsentieren, die von der Datenzugriffsschicht bereitgestellt werden, nämlich das Auslesen aller Aktiengesellschaften (kein Eingabeparameter notwendig) das Anzeigen eines Kurses einer gegebenen Aktiengesellschaft (zwei Eingabepara- meter notwendig) das Berechnen des Kursmittelwerts einer gegebenen Aktiengesellschaft (ein Eingabe- parameter notwendig) Alle drei Schaltflächen leiten die eingegebenen Daten über HTTP-POST an die Datei fachlogik.php weiter: $res=mysql_list_tables($db) dibt die Namen der Tabellen aus der Datenbank $db als Resultset zurück, $db wird als Zeichenkette übergeben mysql_select_db($db) wählt eine Datenbank, deren Name als Zeichenkette in $db übergeben wurde, zur weiteren Verwendung aus $erg=mysql_query($var) setzt eine SQL-Abfrage auf den Datenbankserver ab; das Ergebnis ist je nach SQL-Statement ein Resultset (z. B. bei einer lesenden SELECT -Anwei- sung) oder ein Wahrheitswert (z. B. bei einer schreibenden UPDATE - Anweisung) $arr=mysql_fetch_array ($res,$var) liest eine Zeile aus einem Resultset $res als Datenfeld aus; mit $var kann der Aufbau des Felds gewählt werden: $var=MYSQL_ASSOC bildet ein assoziatives Feld $var=MYSQL_NUM: bildet ein nummerisches Feld $arr=mysql_fetch_row($res) liest eine Zeile aus einem Resultset $res als nummerisch indiziertes Datenfeld $erg=mysql_num_rows($res) liefert die Anzahl der Einträge in einem Resultset <html> <head><title></title></head> <body> <form action="fachlogik.php" method="post"><pre> AG: <input name="frmAG" type="text" value="BMW"><br> Tag: <input name="frmTag" type="text" value="5"><br> <input name="funcAGs" type="submit" value="alle AGs ausgeben" style="width: 11em"><br> <input name="funcKurs" type="submit" value="Kurs anzeigen" Listing 2.70: Das Eingabeformular Befehl Beschreibung Tabe lle 2.28: PHP-Befehle für den Zugriff auf eine MySQL-Datenbank (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 2 – Die Sprache PHP: Prozedural 96 Dadurch entsteht ein Frontend, das in Abbildung 2.17 dargestellt wird. Abbildung 2.17: HTML-Formular zum Auslesen der Börsendaten aus der Datenbank Die Datei fachlogik.php bildet das Bindeglied zwischen der Präsentationsschicht und der Datenzugriffsschicht. In ihrem ersten Teil, der in Listing 2.71 dargestellt wird, werden die Eingaben aus dem ausgefüllten HTML-Formular entgegengenommen und in PHP-Vari- ablen abgelegt. Hier können in einer realen Anwendung auch Prüfungen der Gültigkeit von Eingaben vorgenommen werden. Im Anschluss daran werden die Funktionen ein- gebunden, die die Dienste der Datenzugriffsschicht beinhalten: style="width: 11em"><br> <input name="funcMW" type="submit" value="MW berechnen" style="width: 11em"> </pre></form> </body> </html> <?php $frmAG=$_POST["frmAG"]; $frmTag=$_POST["frmTag"]; $funcAGs=$_POST["funcAGs"]; $funcKurs=$_POST["funcKurs"]; $funcMW=$_POST["funcMW"]; if ($funcAGs!=NULL){ $func=1; } else if ($funcKurs!=NULL){ $func=2; } else if ($funcMW!=NULL){ $func=3; } else{ $func=0; } Listing 2.71: Fachlogik, Teil 1: Auswerten der übergebenen Formulardaten Listing 2.70: Das Eingabeformular (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP–Endlich objektorientiert 97 Der zweite Teil der Fachlogik besteht aus der Ausgabe der Antwort auf die HTTP- Anfrage. Nach dem Öffnen der Verbindung zur Datenbank wird durch die switch- Anweisung untersucht, welchen Dienst der Benutzer angefordert hat. Dementsprechend werden die Daten aus der Datenbank angefordert, die als Rückgabewerte der Funktio- nen aus der Datenzugriffsschicht festgehalten werden. Im Anschluss daran erfolgt die HTML-Aufbereitung dieser Daten für die Ausgabe. Abschließend wird die Verbindung zur Datenbank wieder geschlossen: require("DBzugriff.inc.php"); ?> <html> <head><title>Meine Börse.</title></head> <body> <?php if (!DB_open()){ echo "Fehler beim oeffnen der DB-Verbindung: ".DB_error(); } else{ switch ($func){ case 1: // alle AGs $AGs=DB_AGs(); foreach ($AGs as $index => $datensatz){ echo ('Die DAX-AG mit der ID '.$datensatz[ID].' ist '.$datensatz[name].'<br>'); } break; case 2: // Kurs eines Tages $Kurs=DB_Kurs($frmAG,$frmTag); echo ('Der Kurs von '.$frmAG.' am Tag '.$frmTag.' war '.number_format($Kurs,2).'EUR.'); break; case 3: // Mittelwert $MW=DB_MW($frmAG); echo ('Der Mittelwert des Kurses von '.$frmAG.' ist '.number_format($MW,2).'EUR.'); break; default: echo ('Ungültiger Dienst-Aufruf!'); break; } DB_close(); } Listing 2.72: Fachlogik, Teil 2: Ausführen der Dienste Listing 2.71: Fachlogik, Teil 1: Auswerten der übergebenen Formulardaten (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 2 – Die Sprache PHP: Prozedural 98 Versand von E-Mails In diesem Kapitel wird beschrieben, wie Sie mit PHP E-Mails selbst versenden können. Dazu ist nur ein einziger Befehl vorhanden: mail($empfanger,$betreff,$nachricht,$sender). Dieser Befehl sendet die in der Variablen $nachricht gespeicherte Nachricht von dem Sen- der $sender an den Empfänger $empfänger. Zusätzlich wird noch der Betreff in der Variablen $betreff übergeben. Es fällt vielleicht auf, dass die Absendeadresse beliebig eingegeben wer- den darf. Das E-Mail-Protokoll verlangt nämlich keine Authentifizierung vom Absender. Zusätzlich stellt sich die Frage, warum dem E-Mail-Versand ein eigenes Kapitel gewid- met wird. Die Ursache liegt nämlich darin, dass der mail-Befehl unter einem XAMPP- Server auf einem Windows-Betriebssystem nicht funktioniert und FALSE zurückgibt. Das liegt daran, dass kein Mail-Server existiert, an den die zu sendende E-Mail überge- ben werden kann. Linux bietet hier bereits eigene Lösungen an. Abbildung 2.18: Einstellungen des MercuryS-SMTP-Server In dem XAMPP-Paket ist der Mail-Server Mercury integriert, der für Windows-Plattfor- men noch konfiguriert werden muss und der für lokale Tests ausreichend ist. Starten Sie im ersten Schritt den Mail-Server in dem XAMPP Control Panel. Wenn der Mail-Server im Status Running ist, klicken Sie im Control Panel auf Admin. Daraufhin öffnet sich das Fenster Mercury/32 zur Administration des Mail-Servers. Klicken Sie nun im Hauptmenü auf Configuration und dann auf MercuryS SMTP Server. Dort müssen Sie im Writer General im Feld Announce myself as den Wert localhost eintragen. ?> <br><a href="gui.html">zurück .</a> </body></html> Listing 2.72: Fachlogik, Teil 2: Ausführen der Dienste (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP–Endlich objektorientiert 99 Im Register Connection Control können Sie das Häkchen Do not permit SMTP relaying of non-local mail wegnehmen. So können Sie auch Zieladressen von anderen Domains lokal testen. Mit Klick auf OK können Sie dann das Fenster schließen. Klicken Sie im Anschluss daran nochmals auf Configuration und dann auf MercuryS SMTP Client. Hier müssen Sie unter Indentify myself as nochmals localhost und als Name server die IP-Adresse 127.0.0.1. Diesen Dialog beenden Sie mit Save. Abbildung 2.19: Einstellungen des MercuryS SMTP Client Im nächsten Schritt müssen Sie noch den Benutzer einrichten, also ein Mail-Konto auf dem Server anlegen. Klicken Sie dazu auf Configuration, dann auf Manage local users und abschließend auf add. Es wird der Benutzer FrankDopatka mit dem Passwort test angelegt. Die Administrationsrechte sind nicht zwingend notwendig. Mit OK beenden Sie den Dialog und mit Close schließen Sie die Benutzerverwaltung. Abbildung 2.20: Einrichtung eines neuen Benutzers auf dem SMTP-Server Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. [...]... Abbildung 3.6: 3-Schichten-Architektur der Anwendungsentwicklung PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 113 3 – Vorgehensweise bei der Softwareentwicklung Für Sie als PHP- Entwickler stellt sich die Frage, wie Sie die drei Schichten realisieren können, da Sie ja „ nur“ PHP- Dateien schreiben Die Antwort liegt in der sinnvollen Strukturierung... spezifiziert worden Die Fachlogik besteht aus PHP- Dateien, die nahezu ausschließlich PHP- Code (also weder SQL-Anweisungen noch HTML-, JavaScript- oder gar CSS-Befehle) enthält Sie beinhaltet die „Intelligenz“ der Anwendung, die auf dem Web- PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 115 3 – Vorgehensweise bei der Softwareentwicklung server... Vorgehensweise werden in Kapitel 3.2 erläutert PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 101 3 – Vorgehensweise bei der Softwareentwicklung Besonders wichtig für einen Softwareentwickler sind die in Kapitel 3.2.2 eingeführten Definitionen Denn zusätzlich zu den in Kapitel 2 dargestellten Funktionen von PHP muss die Sprache auch die Definitionen... als „ Ingenieurskunst“ bezeichnet Sie sind in der Lage, aus einer Problemstellung eines Kunden heraus nach einigen Gesprächen PHP- Dateien mit Verzweigungen, Schleifen, PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 105 3 – Vorgehensweise bei der Softwareentwicklung HTML-Formularen und Datenbankanbindungen zu erstellen, sodass die Wünsche des... entsprechenden PHP- Funktionen sind in Kapitel 2.2 beschrieben Neben dem Test der Technologie kann mit einem vertikalen Prototyp auch die Performance der PHP- Anwendung auf dem Server getestet werden So können Sie beispielsweise nahezu gleichzeitig von verschiedenen Clients aus 100 oder 1 000 Kunden anlegen lassen, indem HTTP-Anfragen mit ausgefüllten Formulardaten an den Webserver automa- PHP–Endlich objektorientiert... Anforderungen an eine Software selbst dem Kunden nicht von Beginn an bekannt sind Bei einem länger andauernden Projekt ist es ebenso normal, dass sich PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 111 3 – Vorgehensweise bei der Softwareentwicklung Anforderungen mit der Zeit ändern Dies gibt dem Modell eine weitaus größere Dynamik als dem formalen... eingesetzt, wenn bereits eine Vielzahl von Prozeduren bei Projektbeginn fertig vorliegt, weil sie aus alten Projekten wiederverwendet werden kann PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 103 3 – Vorgehensweise bei der Softwareentwicklung Profitipp Die Wiederverwendbarkeit von Quellcode spielt in der Softwareentwicklung eine immer größere... gehören, keine aktive Funktionalität zum Benutzer hin Sie werden ausschließlich von der Fachlogik aufgerufen Daher können Sie in dz_xxx.inc .php umbenannt werden, z B in dz_kunde.inc .php oder in dz_bestellung.inc .php Diese Dateien werden also ausschließlich von anderen PHP- Dateien inkludiert und kapseln die Zugriffe auf die Datenbank inklusive alle SQL-Anweisungen Dies hat den weiteren Vorteil, dass die... über PHPMyAdmin auf dem MySQL-Server angelegt haben, können Sie über die in Kapitel 2.2 beschriebenen PHP- Befehle Funktionen zum lesenden und schreibenden Zugriff auf diese Daten erstellen und als einzubindende inc.phpDateien für die Fachlogik anbieten Die Fachlogik Die Fachlogik wird in enger Abstimmung mit dem Kunden erstellt, da sie seinen Geschäftsprozess repräsentiert, der in Zukunft mit der PHP- Anwendung... idealerweise in der vorgeschriebenen Zeit, denn Sie haben sich ja in der Entwurfsphase bereits die notwendigen Gedanken gemacht, wie Sie zur Lösung kommen PHP–Endlich objektorientiert Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 107 3 – Vorgehensweise bei der Softwareentwicklung Wenn Sie mit der Implementierung fertig sind, testen Sie Ihre Software zunächst selbst und dann zusammen . DBzugriff.inc .php, erster Teil Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP – Endlich objektorientiert. DBzugriff.inc .php, zweiter Teil Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Erweiterte Funktionen PHP – Endlich objektorientiert