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

Tài liệu PHP – Endlich objektorientiert- P3 doc

30 317 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 đề Die Sprache PHP: Procedural
Trường học University
Chuyên ngành Computer Science
Thể loại Essay
Định dạng
Số trang 30
Dung lượng 520,41 KB

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

Nội dung

Auf diese Weise können Sie mit eigenen, einfachen Beispielenjede Funktion austesten: Zusätzlich können Sie auch eine Sortierung nach einer eigenen Funktion durchführen.Wie Sie eine Funkt

Trang 1

Bei ihrer Verwendung müssen die Indizes nicht in einzelnen oder doppelten rungszeichen gesetzt werden Das erhöht die Lesbarkeit des Quellcodes.

Anfüh-Dynamische Inhalte

Wie bereits erwähnt, müssen auch die Datentypen in einem Array nicht einheitlich sein.Das wird in Listing 2.15 verdeutlicht Somit sind Arrays in PHP sehr dynamische Daten-felder, die mit Collections in Java vergleichbar sind:

Die Ausgabe dieses Arrays lautet array(3) { [2]=> int(0) [-5]=> float(0) [8]=> string(5)

"Hallo" }.

Löschen von Feldern

PHP bietet Ihnen die Möglichkeit, ganze Arrays zu löschen oder zu leeren Zusätzlichkönnen Sie einzelne Elemente aus einem Array entfernen Listing 2.16 zeigt, wie Sie

zunächst das Element mit dem Index 8 aus Listing 2.15 löschen, dann das Datenfeld $data leeren und abschließend die Referenz $data selbst entfernen Wenn Sie ein ganzes Array

nicht mehr benötigen, so können Sie direkt die Referenz entfernen PHP organisiertdabei das gesamte Speichermanagement:

<html><body>

<?php $personen=array(

'ich' => 'Frank', 'Vater' => 'Kurt', 'Bekannter' => 'Hans');

Listing 2.16: Löschen eines Elements sowie Löschen des gesamten Datenfelds

Trang 2

Die Ausgabe dieses Skripts lautet:

array(2) { [2]=> int(0) [-5]=> float(0) } array(0) { }

NULL

Mehrdimensionale Datenfelder

Genauso dynamisch, wie Sie Elemente in einem Feld verwalten können, können Sie auchFelder in einem Feld verwalten Das führt zu mehrdimensionalen Arrays Eine Möglich-keit, ein mehrdimensionales Array anzulegen, zeigt Listing 2.17 Dort ist auch derZugriff auf das mehrdimensionale Datenfeld dargestellt Die Ausgabe ist identisch mitder Reihenfolge, in dem die einzelnen Elemente angelegt worden sind:

Ebenso können Sie auch bei einem mehrdimensionalen Datenfeld die Indizes frei len Das Beispiel in Listing 2.18 zeigt eine freie Definition der Indizes:

unset($data[8]); // löschen eines Elementes echo(var_dump($data).'<br>');

$data=Array(); // leeren des Arrays echo(var_dump($data).'<br>');

unset($data); // löschen des Arrays echo(var_dump($data).'<br>');

?>

</body></html>

<html><body>

<?php $kunden=array(

array('Frank','Dopatka'), array('Uli','Müller'), array('Max','Mustermann') );

Trang 3

Wie auch bei einem eindimensionalen Array muss ein mehrdimensionales Array nichtbei seiner Initialisierung mit Werten gefüllt werden Die zweite Dimensionierung kannebenso dynamisch durchgeführt werden, wie Listing 2.19 zeigt:

PHP-Funktionen zur Bearbeitung von Datenfeldern

Die Sprache PHP verfügt über mächtige Funktionen zur Bearbeitung von Datenfeldern.Die Wichtigsten dieser Funktionen sind im Folgenden kurz zusammengefasst Wenn Sieeine vollständige Übersicht erhalten möchten, können Sie in Suchmaschinen wie Googlemit Begriffen wie „ PHP“, „ Array“ und „ Funktionen“ weitere, seltener verwendete

Funktionen abrufen Beispielsweise hat sich die Internetseite

http://www.phpcenter.de/de-html-manual/ref.array.html als sehr übersichtlich herausgestellt.

Für Sie als Programmierer ist es sinnvoll zu wissen, welche Funktionen PHP bereitsbereit stellt, damit Sie bei Bedarf darauf zugreifen können Es ist nicht ratsam, dass Sie

<html><body>

<?php $kunden=array(

'K1'=>array('VN'=>'Frank','N'=>'Dopatka'), 'K2'=>array('VN'=>'Uli','N'=>'Müller'), 'K3'=>array('VN'=>'Max','N'=>'Mustermann') );

Trang 4

existierende Funktionen nachprogrammieren, da Sie mit Sicherheit weder die mance, noch die Fehlerfreiheit von PHP erreichen.

Perfor-Die erste Gruppe von Funktionen umfasst das Sortieren von Feldern Neben einer ligen Anordnung können Sie eine auf- bzw absteigende Sortierung wählen

zufäl-Listing 2.20 zeigt einen Anwendungsfall einer Sortierung Die Ausgabe lautet „ Frank“,

„ Max“ und dann „ Uli“ Auf diese Weise können Sie mit eigenen, einfachen Beispielenjede Funktion austesten:

Zusätzlich können Sie auch eine Sortierung nach einer eigenen Funktion durchführen.Wie Sie eine Funktion deklarieren und damit ein Datenfeld sortieren, wird in Kapitel2.1.5 vorgestellt

Ähnlich wie beim Auslesen einer Ergebnismenge aus einer Datenbank (Kapitel 2.2:

„ Zugriff auf eine MySQL-Datenbank“) kann man auch einen Zeiger über ein Datenfeldlaufen lassen Das wird oft bei der Suche nach einzelnen Elementen oder für eine Weiter-

assoziativen Feld bei

Tabelle 2.8: Sortierung eines Felds

<html><body>

<?php $kunden=array('Frank','Uli','Max');

Trang 5

verarbeitung verwendet Zusätzlich können Sie ein Datenfeld nach der Anzahl der haltenen Elemente fragen.

ent-Interessant ist auch die Funktion array_walk, die eine eigene Funktion2 auf jedes Element

im Feld anwendet Damit können Sie eine Schleifenstruktur3 einsparen und erzeugenübersichtlichen Quellcode

In Listing 2.21 wird der Zeiger auf ein Datenfeld $kunden zunächst auf das erste Element mit der reset-Funktion gesetzt Dieses Element wird dann über die key- und current-Funk- tion ausgegeben Im Anschluss daran wird der Zeiger über die next-Funktion weiter mit

erneuter Ausgabe bewegt:

count($arr) odersize_of($arr)

gibt die Anzahl der Elemente im Datenfeld zurück

reset($arr) setzt den internen Zeiger im Datenfeld auf das erste Elementend($arr) setzt den internen Zeiger im Datenfeld auf das letzte Elementcurrent($arr) oder

pos($arr)

gibt den Inhalt des Elements zurück, auf dem der Zeiger steht

key($arr) gibt den Index des Elements zurück, auf dem der Zeiger stehtnext($arr) setzt den internen Zeiger im Datenfeld um 1 nach vorneprev($arr) setzt den internen Zeiger im Datenfeld um 1 zurückarray_walk($arr, func) wendet eine selbst definierte Funktion auf jedes Element des Datenfelds an

Tabelle 2.10: Zugriffsfunktionen auf ein Datenfeld

2 Kapitel 2.1.5

3 Kapitel 2.1.4

<html><body>

<?php $kunden=array('Frank','Uli','Max');

Trang 6

Abschließend werden weitere Funktionen zur Behandlung von Datenfeldern vorgestellt,die sich im Alltag als sinnvoll erweisen Diese betreffen unter anderem die Verwaltungmehrerer Felder.

Ebenso ist die Funktion in_array hervorzuheben, die eine automatische Suche nach

einem Element durchführt Aus eigener Erfahrung wird diese Funktion selten det und stattdessen eine kompliziertere und inperformante Schleifenkonstruktion

In diesem Kapitel wird ein wichtiges Konzept jeder prozeduralen Programmiersprachevorgestellt Mithilfe einer Verzweigung sind Sie in der Lage, eine alternative AusführungIhrer Anwendung zu programmieren Sie können damit auf eine eintretende Bedingungentsprechend reagieren

Ein Beispiel ist das Anmelden an ein Internetportal Wenn Sie eine richtige Kombinationvon Benutzername und Kennwort eingeben, so sollen Sie in das Portal gelangen.Ansonsten soll eine Fehlermeldung angezeigt werden Die richtigen Angaben soll PHPspäter aus einer Datenbank entnehmen Dabei muss eine Verbindung zur Datenbankaufgebaut werden Nun kann es vorkommen, dass der Datenbankserver nicht online ist

In diesem Fall kann man nicht prüfen, ob die richtigen Daten eingegeben wurden Wenndie Verbindung also hergestellt wurde, kann erst die Prüfung erfolgen Ansonsten mussder Anwender eine Fehlermeldung erhalten, dass technische Probleme bei der Prüfungaufgetreten sind, wofür sich der Anbieter entschuldigt

Immer wenn Sie im Sprachgebrauch eine „ Wenn-Dann“- oder „ ten“- Formulierung verwenden, werden Sie in Ihrer Anwendung eine Verzweigung ein-setzen Eine Verzweigung ist auch immer an eine Bedingung geknüpft, die entwedererfüllt oder nicht erfüllt sein kann Bei der Bedingung handelt es sich demnach um einen

array_diff($arr1, $arr2, ) ermittelt Unterschiede in Datenfeldern und gibt diese als neues Datenfeld

zurückarray_merge($arr1, $arr2) verbindet zwei Datenfelder zu einem neuen Feldarray_pad($arr, $len, $wert) verkürzt (bei $len<0) oder verlängert ein nummerisches Feld um $len Ele-

mente und ersetzt leere Elementein_array($wert, $arr) gibt TRUE zurück, wenn ein Wert in einem Datenfeld vorhanden istarray_shift($arr) liefert den Wert des ersten Elements eines Datenfelds und löscht das Ele-

ment dann im Feldarray_pop($arr) gibt den Wert des ersten Elements eines Datenfelds und löscht das Element

dann im Feldarray_sum($arr) summiert die Werte aller Ganz- und Fließkommazahlen aus einem Feldarray_unique($arr) entfernt mehrfache Einträge aus einem Datenfeld

Tabelle 2.11: Weitere nützliche Datenfeldfunktionen

Trang 7

Wahrheitswert, der TRUE oder FALSE sein kann Eine Bedingung kann dabei aus

Teilbe-dingungen bestehen, die über logische Operatoren verknüpft werden (Tabelle 2.5)

Die If-then-else-Verzweigung

PHP bietet wie nahezu alle anderen Programmiersprachen auch die if-then-Verzweigung

mit der in Listing 2.22 skizzierten Syntax:

Zunächst werden die Texte Anweisung1 und Anweisung2 ausgegeben Im weiteren

Ver-lauf werden statt der einfachen Textausgaben PHP-Befehle und/oder eigene Funktionenausgeführt In diesem Schritt wird sich jedoch auf die Verzweigung konzentriert Der

Text Anweisung3(Bedingung erfüllt)<br> wird nur dann ausgegeben, wenn die Variable

$bedingung den Wert TRUE hat Wie es bei PHP typisch ist, wird die Ausgabe zum

Inter-netbrowser des Clients weitergegeben, der dann den Zeilenumbruch interpretiert Im

Anschluss daran werden die Ausgaben Anweisung4, Anweisung5 und Anweisung6 tigt War der Wert der Bedingung FALSE, so wird also die Ausgabe Anweisung3 unter-

getä-bunden

Innerhalb der if-Konstruktion – also innerhalb der geschweiften Klammern – können

beliebig viele Befehle platziert werden, die wie gewohnt durch ein Semikolon der getrennt werden Außerdem können weitere Verzweigungen platziert werden Sokönnen Sie erreichen, dass beispielsweise zunächst geprüft wird, ob eine Verbindung zurDatenbank erfolgreich aufgebaut wurde Ist das der Fall, wird das richtige Kennwort ausder Datenbank geholt und mit dem eingegebenen Kennwort verglichen Dieser Vergleich

voneinan-liefert wiederum einen Wahrheitswert Wenn dieser TRUE ist, hat der Anwender Zugang

zum Portal

Für den Fall, dass eine Bedingung FALSE ergibt, können Sie ebenso Anweisungen

plat-zieren, die ausschließlich in diesem Fall ausgeführt werden Eine Skizze dazu sehen Sie

in Listing 2.23:

<?php echo('Anweisung1<br>'); echo('Anweisung2<br>');

if ($bedingung==TRUE){

echo('Anweisung 3(Bedingung erfüllt)<br>');

} echo('Anweisung4<br>'); echo('Anweisung5<br>'); echo('Anweisung6<br>');

?>

Listing 2.22: Skizze einer Wenn-Dann-Verzweigung

<?php echo('Anweisung1<br>'); echo('Anweisung2<br>');

Trang 8

Hier wird entweder Anweisung3 ausgegeben, in dem Fall, dass $bedingung erfüllt ist, oder Anweisung4, falls die $bedingung nicht erfüllt ist Ansonsten wird der Quellcode wie

gewohnt linear abgearbeitet

Abbildung 2.6 stellt die beiden bislang vorgestellten Arten der Verzweigung anhand vonProgrammablaufplänen gegenüber und bezieht sich dabei auf die Quellcodes der beidenListings Um den Verlauf eines Programms darzustellen, eignen sich Programmablauf-pläne (PAP) besonders gut Sie sind nach DIN 66001 genormt Die Aktivitätsdiagrammeder UML (Kapitel 3) können als Weiterentwicklung der Programmablaufpläne gesehenwerden

Abbildung 2.6: Die „Wenn-Dann“- (a) und die „Wenn-Dann-Ansonsten“-Verzweigung (b)

Im Folgenden werden einige Szenarien beschrieben, bei denen Verzweigungen im text der HTML-Ausgabe häufig eingesetzt werden Falls Sie bislang noch nicht mit PHPprogrammiert haben, sollten Sie diese kleinen Beispiele nachprogrammieren, selbst ver-ändern und verstehen

else{

echo('Anweisung 4(Bedingung NICHT erfüllt)<br>');

} echo('Anweisung5<br>'); echo('Anweisung6<br>');

?>

Listing 2.23: Skizze einer Wenn-Dann-Ansonsten-Verzweigung (Forts.)

Trang 9

Listing 2.24 zeigt bereits eine verschachtelte Verzweigung, bei der eine Variable $wert auf

eine Grenze, im Beispiel 10, geprüft wird Es gibt hier drei Möglichkeiten: Die Grenzekann unterschritten oder überschritten sein Ist beides nicht der Fall, so entspricht der

Wert genau dem Grenzwert In diesem Beispiel wird die Ausgabe über den echo-Befehl

von PHP in den HTML-Ausgabestrom geschrieben:

PHP bietet Ihnen aber auch die Option, den PHP-Quellcode beim Eintreffen einer gung zu unterbrechen und direkt mit der HTML-Ausgabe fortzufahren Damit könnenSie ununterbrochenen HTML-Code schreiben Listing 2.25 zeigt das gleiche Beispiel mit

Bedin-direkter HTML-Ausgabe, indem mit ?>HTML<?php der PHP-Code unterbrochen wird.

Dabei werden auch einige HTML-Befehle in die Ausgabe integriert Welche Art der gabe Sie wählen, liegt an Ihrem eigenen Ermessen und am eigenen Programmierstil:

Aus-<?php $wert=10; ?>

<html><body>

Der Wert ist <?php if($wert<10){

echo(' kleiner als ');

} else{

if($wert>10){

echo(' größer als ');

} else{

echo(' gleich ');

} }

?><h2>Der Wert ist <b>kleiner als</b> 10.</h2><?php }

else{

if($wert>10){

?><h2>Der Wert ist <b>größer als</b> 10.</h2><?php

Listing 2.25: Prüfung eines Werts mit unterbrochenem PHP-Code

Trang 10

Im Beispiel des Listings 2.26 wird anhand einer Verzweigung eine Farbe im HTML-Codegesetzt Damit kann ein positiver Wert grün und ein negativer Wert rot dargestellt wer-den Ist der Wert 0, so wird er schwarz hinterlegt Um die Farbe zu setzen, definiert PHPeinen CSS-Stil (Cascading Stylesheets), der dem Wert dann zugewiesen wird Ein solcherCSS-Stil definiert die grafische Darstellung von HTML-Code und besitzt eine Vielzahlvon Gestaltungsmöglichkeiten.

Die Farbe wird in RGB-Anteilen (Rot-Grün-Blau) im hexadezimalen Format angegeben.Die Farbe Rot entspricht dabei „ FF0000“, wobei FF im Hex-Format der Zahl 255 im dezi-malen Format entspricht Da die ersten beiden Stellen der Farbangabe die Rot-Angabedarstellt, wird bei „ FF0000“ der maximale Rot-Anteil gesetzt Die Farbe besitzt wederGrün-, noch Blau-Anteile Somit ergibt sich ein strahlendes Rot als Ausgabe bei einemnegativen Wert:

} else{

?><h2>Der Wert ist <b>gleich</b> 10.</h2><?php }

}

?>

</body></html>

<?php $wert=-5.3;

if($wert<0){

$farbe='#FF0000';

} else{

if($wert>0){

$farbe='#00FF00';

} else{

$farbe='#000000';

} }

Trang 11

Achten Sie darauf, dass bei der HTML-Ausgabe das color-Attribut des font-Befehls in

Anführungszeichen gesetzt werden sollte Dort hinein gibt PHP den aktuellen Farbwertaus, bevor die Ausgabe zum Internetbrowser des Clients gesendet wird

In Listing 2.27 ist die resultierende HTML-Ausgabe dargestellt Das Ergebnis ist einegewöhnliche HTML-Datei mit einigen CSS-Angaben

Die elseif-Verzweigung

Oft kommt es vor, dass Sie mehrere Fallunterscheidungen schachteln müssen Die

if-then-else-Konstruktionen sind in diesem Fall unübersichtlich Deshalb existiert eine weitere,

ver-einfachte Struktur, die genau für mehrfache Bedingungen geeignet ist Die

if-elseif-Verzwei-gung wird in Listing 2.28 vorgestellt, indem das Beispiel der Farbauswahl von Listing 2.26umgeschrieben wird Der ausgegebene HTML-Code des Beispiels bleibt identisch Bereits

bei der Verwendung von zwei Bedingungen wirkt der elseif-Befehl kompakter:

Die elseif-Blöcke können mehrfach hintereinander kopiert werden Bei der ersten

zutref-fenden Bedingung wird der Inhalt des entsprechenden Quellcodeblocks abgearbeitet

Nach der Abarbeitung wird der Quellcode hinter der letzten Klammer von if-elseif weiter

bearbeitet

Im Beispiel wurde ausschließlich die Variable $wert für die Formulierung der Bedingung

verwendet In diesem Fall können Sie stattdessen auch die noch kompaktere Darstellung

der switch-Anweisung verwenden, die im nächsten Unterkapitel vorgestellt wird

Über logische Operatoren lassen sich mehrere Variablen zu komplexen Ausdrücken

ver-binden und als Bedingung für die elseif-Blöcke verwenden Im Beispiel des Listings 2.29

if($wert<0){

$farbe='#FF0000';

} elseif($wert>0){

$farbe='#00FF00';

} else{

Trang 12

wird eine ungewöhnliche Urlaubsregelung implementiert Dabei bekommen Frauen stetsetwas mehr Urlaub als Männer Zusätzlich gibt es eine Staffelung in drei Altersklassen:

Das Fragezeichen als Verzweigung

Bei vielen Programmiersprachen wie auch in PHP existiert eine weitere

if-then-else-Kon-struktion, die jedoch sehr selten zum Einsatz kommt Listing 2.30 zeigt das Setzen einer

Ausgabe in Abhängigkeit einer Variablen $alter, wobei zwischen „ jung“ und „ alt“ schieden werden soll Das würden Sie bislang mit einer einzigen if-then-else-Verzwei-

unter-<?php $alter=23; $istWeiblich=TRUE;

<html><body><?php echo $urlaubstage?></body></html>

Listing 2.29: Eine Urlaubsregelung mit elseif

Profitipp

Denken Sie bei Bedingungen immer an alle möglichen Fälle Wenn Sie in einer

if-Bedingung auf „ kleiner“ prüfen, fehlt neben „ größer“ noch der Fall „ gleich“ Wennman keinen Gewinn erwirtschaftet, macht man nicht unbedingt Verlust Es kannauch sein, dass das Ergebnis 0 lautet Werden solche Fälle übersehen, erhält man eineSoftware, die in 99.9 % der Fälle korrekt funktioniert, jedoch „ plötzlich“ eine falscheAnnahme macht Sucht man dann die fehlerhafte Verarbeitung, ist das meist sehrzeitaufwendig

Trang 13

gung lösen Der Fragezeichenoperator, der auch als Trinitätsoperator bezeichnet wird,bietet eine Lösung in einer einzigen Zeile bei minimalem zusätzlichen Text:

Zunächst muss eine Bedingung formuliert werden, die einen Wahrheitswert zurück gibt

Diese Bedingung wird in Klammern gesetzt Ihr folgt der ?-Operator Die Anweisung

hinter dem Operator wird genau dann ausgeführt, wenn die Bedingung erfüllt ist, der

Wahrheitswert also TRUE ist Ist das Alter also kleiner als 50 Jahre, so wird die sung $ausgabe="jung" ausgeführt Wenn die Bedingung nicht erfüllt ist, so wird die Anweisung ausgeführt, die hinter dem Doppelpunkt steht, also $ausgabe="alt" Der Dop- pelpunkt gehört also zu dem Fragezeichenoperator und trennt das then von dem else.

Zuwei-Die switch-Verzweigung

Die switch-Verzweigung ist nicht so flexibel wie eine elseif-Konstruktion, bietet aber eine

sehr übersichtliche Struktur für eine Fallunterscheidung einer einzelnen Variable an Mit

dem Namen der Variablen beginnt der switch-Block, in dessen Rahmen die

verschiede-nen Fälle (Cases) abgearbeitet werden Die Verarbeitung beginnt bei dem ersten

zutref-fenden case-Block und wird bis zum nächsten break-Kommando abgearbeitet Die beitung kann dadurch über mehrere case-Blöcke verlaufen Abbildung 2.7 zeigt die Arbeitsweise der switch-Verzweigung anhand eines Programmablaufplans.

Verar-<?php $alter=50;

($alter<50) ? $ausgabe="jung" : $ausgabe="alt";

?>

<html><body><?php echo $ausgabe?></body></html>

Listing 2.30: Eine Fallunterscheidung mit Fragezeichen

Meinung

Programmieranfänger halten den Fragezeichenoperator für kryptisch und denerzeugten Quellcode für schlecht lesbar Profis verwenden gerade diesen Operatorjedoch gern, um kompakten Quellcode zu verfassen Überlegen Sie am besten, wer inZukunft Einblick in Ihren Quellcode bekommt Gehen Sie von einem erfahrenenUmfeld von PHP-Entwicklern aus, können Sie den Operator gern verwenden

Trang 14

Abbildung 2.7: Die switch-Verzweigung

Im ersten Beispiel erhalten Sie eine Schulnote aus einer Datenbank, die in der Variablen

$note gespeichert wird Sie möchten nun für die Ausgabe den Text der Note ermitteln.

Die Fälle 4 bis 6 wurden ausgelassen Wie Sie sehen, erzeugt die switch-Anweisung sehr

übersichtlichen Quellcode:

<?php $note=2;

Trang 15

Ähnlich wie das letzte else in der elseif-Struktur existiert bei dem switch-Block bei Bedarf ein abschließender default-Block Damit können alle Fälle abgefangen werden, die vorher nicht behandelt wurden Ob die Verwendung der switch-Verzweigung übersichtlicher ist als die elseif-Konstruktion, ist Geschmacksache

Die Urlaubsregelung aus Listing 2.29 kann jedenfalls nicht mit einer switch-Verzweigung

gelöst werden, da die Urlaubsregelung Wertebereiche des Alters abfragt, beispielsweise

„ von inklusive 20 Jahren bis 40 Jahren“ Das ist mit einem switch-Befehl nicht möglich Die switch-Verzweigung ist also in ihrer Mächtigkeit beschränkter als eine elseif-Kon-

Ngày đăng: 26/01/2014, 19:20

TỪ KHÓA LIÊN QUAN