PHP - home.hs-karlsruhe.de

Werbung
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Objekrelationale Abbildungsschicht
Dr. Christian Senger
PHP
1
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Einbettung von SQL in Programmiersprachen
• 2 Welten:
– deskriptive Anfragesprache SQL (mengenwertige Ergebnisse)
– imperative Programmiersprache (tupelorientiert)
• Prozedural
• Objektorientiert
• Einbindung am Beispiel von PHP
Dr. Christian Senger
PHP
2
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Einbettung von SQL in Programmiersprachen
• Inhalt:
– Architektur webbasierter Anwendungen
– Einführung in PHP (PHP5)
• Grundlagen
• Einbindung von SQL in PHP
• Objektorientierung
– Objektrelationale Abbildungsschicht (CRUD-Interface)
– Model View Controler Pradigma in PHP
Dr. Christian Senger
PHP
3
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Architektur von Informationssystemen (MVC)
• Modell
– Darzustellende und zu verarbeitende Daten
– gegebenenfalls (abhängig von der Implementierung)
Geschäftslogik.
– Von Präsentation und Steuerung unabhängig
• Präsentation
– Darstellung der benötigten Daten
– Nimmt Benutzerinteraktionen entgegen
• Steuerung
– verwaltet eine oder mehrere Präsentationen
– nimmt Benutzeraktionen aus den Präsentationen entgegen
– Auswertung  Reaktion
Dr. Christian Senger
PHP
4
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Architektur von Informationssystemen (MVC)
Dr. Christian Senger
PHP
5
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
PHP: Hypertext Preprocessor
• serverseitige Skriptsprache zur Erstellung dynamischer
Webseiten (webbasierter Informationssysteme)
• PHP Code wird in HTML-Seite eingebettet
• PHP ist Open Source, Cross plattform
• Sehr gute Libraries für Zugriff auf Datenbanken
• PHP Extension and Application Repository (PEAR) ist
Zentrale Stelle für frei verfügbare
Erweiterungen/Libraries (inkl. automatisierte Installation)
Dr. Christian Senger
PHP
6
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
PHP: Hypertext Preprocessor
• PHP bietet Möglichkeit HTTP-Header Informationen zu
verschicken
• Syntax ähnlich C oder Perl
• PHP Code befindet sich in besonders gekennzeichneten
Stellen in einer Seite:
– <?php ... ?>
– (Kurzformen: <? ... ?> bzw. <?= ... ?> für <php echo ... ?>)
• Einsatz auch als Cross-Plattform Scripting language
Dr. Christian Senger
PHP
7
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
PHP - Anmerkung
•
Bevor man ein Projekt startet – Programmiersprache mit Bedacht wählen:
http://commons.wikimedia.org/wiki/File:Genealogical_tree_of_programming_languages.svg
Dr. Christian Senger
PHP
8
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
PHP - Anmerkung
•
Bevor man ein Projekt startet – Programmiersprache mit Bedacht wählen:
–
Dimension des Projekts, kann man den Code/das Projekt nachher gut skalieren?
–
Wie viele Programmierer arbeiten an dem Projekt mit?
–
Gibt es eine „vernünftige“ Entwicklungsumgebung?
–
Brauche ich eine Standalone, eine Webbasierte oder eine gemischte Applikation?
–
Muss man die Speicherverwaltung und die Konstrukte (z.B. Arrays) verstehen?
–
Gutes Debugging möglich?
–
In Zeiten des Open Source/der Freeware: Ist die Funktionalität ausreichend auf mein
Problem zugeschnitten, gibt es Bibliotheken? VORHER ausprobieren!
–
Support / active community (z.B. StackOverflow)
–
Darf keine „Neigungssache“ sein
C++
PERL
Java
PHP
Python
Dr. Christian Senger
PHP
9
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Ein erstes Beispiel
<html>
<body>
<h1>Mein erstes
PHP-Programm:</h1>
<p/>
<?
// PHP Codefragment:
echo "Hartkodierter
Taschenrechner";
$a = 10;
$b = 32;
$c = $a + $b;
?>
<p/>
<? echo $a ?> + <? echo $b ?> =
<?=$c?>
</body>
</html>
Dr. Christian Senger
PHP
10
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Variablen
•
Typen:
–
–
–
–
–
–
Integer
String/Zeichenkette
Fließkomma-Zahlen
Array
Dictionary
Object
•
Variablen beginnen in PHP
mit einem $-Zeichen
•
Allerdings: Implizite
Typkonvertierung
$a = 131;
$d ="Zeichenkette";
$a = ’... wird konvertiert in eine
Zeichenkette’;
$friends = array(’Ingo’,’Andrea’);
$c[2] = 12;
$c[] = "Speichere mich an der
nächsten freien Stelle";
// z.B. $c[3]
$Laender[’I’] = ’Italy’;
$Laender[’F’] = "France";
$obj = new Film(’Big Fish’, 2003);
Dr. Christian Senger
PHP
11
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Arrays
array_pop($arr)
// entfernt letztes Element
// und gibt es zurück
$namen = array(’Klaus’,’Inge’,
’Sandra’,’Ingo’);
$hobbies = array();
array_push($arr, $element)
// fügt hinten $element ein
echo $namen[0];
array_push($hobbies,
’Extremjojo’);
in_array($nadel, $heuhaufen)
// prüft, ob $nadel in
// $heuhaufen existiert
echo count($hobbies);
echo array_pop($hobbies);
echo count($hobbies);
sort($arr)
// sortiert die Elemente in $arr
count($arr)
// gibt Anzahl Elemnte in $arr
// zurück
Dr. Christian Senger
PHP
12
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Assoziative Arrays
// Assoziative Arrays
// (Schlüssel-Wert Paare)
$laender[’GR’]
$laender[’E’]
$laender[’AND’]
// Funktionen für assoziative Arrays
array_keys($dic)
// liefert alle Schlüssel als
// Array
= ’Griechenland’;
= ’Spanien’;
= ’Andorra’;
array_values($dic)
// liefert alle Werte als Array
$andere_laender =
array('D'=>'Deutschland',
'F'=>'Frankreich',
'I'=>'Italien');
asort($dic)
// sortiert die Elemente in
// $dic entsprechend ihrer
// Werte
echo $laender[’E’];
ksort($dic)
// sortiert nach Schlüssel
$kuerzel = array_keys($laender);
$laendernamen =
array_values($laender);
Dr. Christian Senger
array_key_exists($key, $dic)
// existiert $key in $dic ?
PHP
13
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Operatoren
Arithmetische Operatoren
Vergleichs-Operatoren
•
•
•
•
•
•
•
•
•
•
•
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b
Addition
Subtraktion.
Multiplikation.
Division.
Modulo (Rest einer
Division)
Zuweisungsoperatoren
•
•
•
•
•
•
Inkrement- bzw.
Dekrementierungsoperator
$a =3;
$a += 5;
// wie $a = $a + 5;
$b = "Big ";
$c = "Fish ";
$d = $c . $b;
// $d enthält „Big Fish"
$b .= "Lebowski"; // wie $b = $b .
//"Lebowski";
•
•
•
•
++$a
$a++
--$a
$a--
//
//
//
//
Prä-Inkrement
Post-Inkrement
Prä-Dekrement
Post-Dekrement
Logische Operatoren
Achtung: Implizite Typkonvertierung: PHP ist
nicht typensicher, d.h.
if (int ==bool) {wahr/falsch}
string == bool, int == string
funktionieren.  ===/ !=== prüft den Typ mit
Dr. Christian Senger
$a == $b
$a != $b
$a < $b
$a <= $b
$a > $b
$a >= $b
PHP
•
•
•
$a and $b bzw. $a && $b
$a or $b bzw. $a || $b
$a xor $b
•
! $a
// Und
// Oder
// Entweder
// Oder
// Nicht
14
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
String-Operationen
$a
$b
$c
$d
$e
=
=
=
=
=
5;
"five";
"$b ($a)";
'$b ($a)';
"\$a = $a";
$a:
$b:
$c:
$d:
$e:
5
five
five (5)
$b ($a)
$a = 5
$h = "simple quote ' in a text";
$i = 'in a text " in a text';
$j = "single ' and double quotes \"
in text";
$h: simple quote ' in a text
$i: in a text " in a text
$j: single ' and double quotes " in
text
$k = "Backslash \\ in a text ";
$k: Backslash \ in a text
Variablen innerhalb von " ... " werden evaluiert, innerhalb von ’... ’ nicht.
\ - Zeichen (Backslash) zur Ausgabe spezieller Zeichen mit Sonderbedeutung ( ',", $, \)
Dr. Christian Senger
PHP
15
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Kontrollstrukturen I
Dr. Christian Senger
PHP
16
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Kontrollstrukturen II
// while-Schleife
// for - Schleife
$i =1;
while ($i <= 10) {
echo $i++;
}
for ($i = 1; $i <= 10;
$i++) {
echo $i;
}
// do - Schleife
// break-Anweisung
$i =1;
do {
echo $i;
$i = $i + 1;
$i =1;
while (True) { {
if ($i > 10) {
break;
}
echo $i;
$i++;
} while ($i<=10);
}
Dr. Christian Senger
PHP
17
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Kontrollstrukturen III
// foreach Schleife mit
// Arrays:
$namen =
array(’Klaus’,’Inge’,
’Sandra’,’Ingo’);
foreach ($namen as $name){
echo "$name <br>";
}
//Ausgabe:
Klaus
Inge
Sandra
Ingo
Dr. Christian Senger
//mit Dictionary
$laender[’PL’] = ’Polen’;
$laender[’E’]
= ’Spanien’;
$laender[’AND’] = ’Andorra’;
foreach (
$laender as $kennung=>$name){
echo "$name
($kennung)<br>";
}
//Ausgabe:
Polen (PL)
Spanien(E)
Andorra (AND)
PHP
18
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Funktionen
//Beispieldefinition:
function
mach_was($arg_1,$arg_2,...,$arg_n
) {
// hier passiert irgendwas
// ...
return $irgendwas;
}
<?php
function square ($x) {
return $x * $x;
}
?>
<html>
<body>
<?php $v = 3;
$z = 12;
?>
Das Quadrat von <?= $v ?> ist
<? echo square($v) ?>
<p>
Das Quadrat von <?= $z ?> ist
<? echo square($z) ?>
</body>
</html>
function square ($x) {
return $x * $x;
}
//Default Funktionsparameter
function abrunden($zahl,
$nachkommastellen = 0)
{ ... }
Aufruf:
abrunden(121.4234); // --> 121
abrunden(121.4234, 2); // --> 121.42
Dr. Christian Senger
PHP
19
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Ausgabe
Dr. Christian Senger
PHP
20
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Modularisierung
•
Mit dem include (...) - Statement
können externe Dateien in PHPSeiten eingebunden werden.
•
die externen Seiten können
enthalten:
– HTML-Code (z.B.
header/footer)
– PHP-Code (einbinden von
zentral definierten
Funktionen/Klassen/
Codefragmenten)
– PHP und HTML-Code
Dr. Christian Senger
PHP
21
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Quellcode
<html>
<head>
<title>Couchsurfing</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><img src="couch.jpg" width="600" height="300"> </p>
<h1>Couchsurfer-Projekt</h1>
<p><a href="Impressum">Impressum</a> </p>
</body>
</html>
Dr. Christian Senger
PHP
22
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Quellcode II
<?
include('header.php');
?>
<hr>
<p>ist ein kostenloses, internetbasiertes Gastfreundschaftsnetzwerk. Die
Mitglieder
nutzen die Website, um <br>
eine kostenlose Unterkunft auf Reisen zu finden, selbst eine Unterkunft
oder
auch anderes anzubieten, <br>
wie beispielsweise einem Reisenden die Stadt zu zeigen. Mitte März
2009
zählte CouchSurfing über <br>
eine Million Mitglieder in 231 Ländern und Gebieten[1] und ist damit
die
größte Vereinigung seiner Art.<br>
Rund 36 Prozent boten zu diesem Zeitpunkt einen Schlafplatz an (weitere
18 Prozent
unter Vorbehalt).[1]</p>
<hr>
<?
include('footer.php');
?>
Dr. Christian Senger
PHP
23
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel
// Erstellung einer HTML Seite,
welche das kleine 1 x 1
ausgibt:
// HTML Tabellencode:
<table border="1">
<tr>
<td>1</td>...<td>9</td>
</tr>
...
<tr>
<td>9</td>...<td>81</td>
</tr>
...
</table>
Dr. Christian Senger
PHP
24
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Beispiel mit PHP
<html>
<head>
<title>Das Kleine 1x1</title>
</head>
<body>
gibt n Zeilen aus
<table border="1">
<? $n = 10;
for ($i=1; $i <= $n; $i++) { ?>
<tr>
<?
for ($j=1; $j <= $n; $j++) {
echo "<td>".($i*$j)."</td>";
}
?>
</tr>
gibt n Spalten aus
<?} ?>
</table>
</body>
</html>
Dr. Christian Senger
PHP
25
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Parameter-Übergabe (POST)
<html>
<body>
<form method="post"
action="addition.php">
Zwei Zahlen eingeben:
<p>
Zahl 1:
<input type="text" name="zahl_1">
<p>
Zahl 2:
<input type="text" name="zahl_2">
<p>
<input type="submit" value="addiere">
</form>
</body>
</html>
Dr. Christian Senger
PHP
26
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Rechenprogramm
<!-- Script: addition.php -->
<?
$x = $_REQUEST['zahl_1'];
$y = $_REQUEST['zahl_2'];
if (empty($x))
die('Parameter zahl_1 ist nicht definiert');
if (empty($y))
die('Parameter zahl_2 ist nicht definiert');
?>
<html>
<body>
<?
$summe = $x + $y;
?>
Die Summe von <?=$x?> und <?=$y?> ist <b><?=$summe?></b>
<p>
<a href="taschenrechner.php">zur¨ck</a>
</body>
</html>
Dr. Christian Senger
PHP
27
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Rechenprogramm - Ausgabe
Dr. Christian Senger
PHP
28
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Parameter-Übergabe (GET)
<html>
<body>
<form method="get"
action="addition.php">
Zwei Zahlen eingeben:
<p>
Zahl 1:
<input type="text" name="zahl_1">
<p>
Zahl 2:
<input type="text" name="zahl_2">
<p>
<input type="submit" value="addiere">
</form>
</body>
</html>
Dr. Christian Senger
PHP
29
Fakultät für Informatik & Wirtschaftsinformatik
DB & IS II – SS 2015
Literatur zu PHP
•
PHP Online Manual: http://www.php.net/docs.php
•
PHP - Ein praktischer Einstieg; Ulrich Günther; 2. Auflage 2004; O’Reilly; EUR19.00
•
PHP Kochbuch; David Sklar & Adam Trachtenberg; Deutsche Übersetzung von Jörg
Staudemeyer & Ulrich Speidel; 1. Auflage Juli 2003; ISBN 3-89721-351-6;O’Reilly;
Seiten 656; EUR 44.00
•
PHP Online Manual: http://www.php.net/docs.php
•
PHP - kurz & gut, 2. Auflage; Rasmus Lerdorf; Deutsche Übersetzung von Raimund
Eimann & Lars Schulten; 2. Auflage März 2003; ISBN 3-89721-251-X; O’Reilly;
Seiten 144; EUR 8.90
•
PHP Online Manual: http://www.php.net/docs.php
•
HTML Tutorial: http://de.selfhtml.org/
•
PEAR - PHP Extension and Application Repository http://pear.php.net/
Dr. Christian Senger
PHP
30
Herunterladen