Jan Teriete

Objektorientiertes PHP Band 1: Grundlagen der OOP Ein Webmasters Press Lernbuch Version 10.0.0 vom 12.04.2018 Autorisiertes Curriculum für das Webmasters Europe Ausbildungs- und Zertifizierungsprogramm

— www.webmasters-europe.org —

Inhaltsverzeichnis 1

2

3

4

Einführung

11

1.1

Einleitung

11

1.2

Was sind Entwurfsmuster?

11

1.3

Vorkenntnisse

12

1.4

Aufbau der Lektionen

12

1.4.1

Aufgaben im Fließtext

12

1.4.2

»Testen Sie Ihr Wissen!«

12

1.4.3

»Übungen«

13

1.4.4

»Optionale Übungen«

13

1.5

Anforderungen an PHP

13

Strukturierung von PHP-Webprojekten

14

2.1

Das Problem

14

2.2

Strukturierung von PHP-Code

14

2.2.1

PHP und HTML trennen

14

2.2.2

Lesbaren Code schreiben

17

2.2.3

Kapselung in Funktionen

18

2.2.4

Funktionen, die atomare Probleme lösen

20

2.3

Zusammenfassung

22

Einführung in die objektorientierte Programmierung

23

3.1

Einleitung

23

3.2

Was sind Objekte?

23

3.2.1

Objekte in PHP

25

3.2.2

Klassen

26

3.3

Attribute

28

3.3.1

Attribute verändern

28

3.3.2

Attribute auslesen

29

3.3.3

Attribute in Klassen definieren

29

3.4

Methoden

31

3.4.1

Grundlagen

31

3.4.2

Vorteil von Methoden

32

3.4.3

Die Variable $this

33

3.5

Namenskonventionen

35

3.5.1

Klassen

35

3.5.2

Attribute

35

3.5.3

Methoden

36

3.6

Testen Sie Ihr Wissen!

36

3.7

Übungen

36

Getter- und Setter-Methoden

38

4.1

Das Problem

38

4.2

Kapselung

38

4.3

Getter-Methoden

38

4.3.1

Vorteil von Getter-Methoden

39

4.3.2

Ein Attribut »protected« machen

40

4.4

Setter-Methoden

42

5

6

7

8

9

4.4.1

Nachteile des direkten Änderns eines Attributs

42

4.4.2

Methoden zum Ändern von Attributen

42

4.5

Öffentliche und geschützte Methoden

44

4.6

Testen Sie Ihr Wissen!

44

4.7

Übungen

44

Arbeiten mit Objekten

46

5.1

Das Problem

46

5.2

Methoden, die andere Methoden aufrufen

46

5.3

Methoden in anderen Objekten aufrufen

48

5.3.1

Grundlagen

48

5.3.2

Der instanceof-Operator

50

5.3.3

Typdeklarationen

51

5.4

Testen Sie Ihr Wissen!

53

5.5

Übungen

53

Virtuelle Attribute

55

6.1

Das Problem

55

6.2

Virtuelle Attribute

55

6.2.1

Konzept

55

6.2.2

Setter für virtuelle Attribute

56

6.3

Testen Sie Ihr Wissen!

57

6.4

Übungen

57

6.5

Optionale Übungen

57

Magische Methoden

59

7.1

Das Problem

59

7.2

Magische Methoden

60

7.2.1

Konzept

60

7.2.2

Die Methode __toString()

60

7.3

Konstruktoren

62

7.3.1

Konzept

62

7.3.2

Die Methode __construct()

62

7.3.3

Parameter an __construct() übergeben

62

7.3.4

Ein assoziatives Array an den Konstruktor übergeben

64

7.4

Testen Sie Ihr Wissen!

68

7.5

Übungen

68

7.6

Optionale Übungen

68

Beziehungen zwischen Objekten

69

8.1

Das Problem

69

8.2

Objekte in anderen Objekten verstecken

69

8.3

Ganze Objekte als Parameter übergeben

71

8.4

Testen Sie Ihr Wissen!

72

8.5

Übungen

72

8.6

Optionale Übungen

72

MVC

74

9.1

Einleitung

74

9.1.1

MVC als Konzept

74

9.1.2

Unser MVC-Konzept

75

9.2

Das Beispielprojekt »hallo«

75

10

11

12

9.3

Der Model-Layer

77

9.4

Templates

80

9.4.1

Vollständige Templates

80

9.4.2

Teil-Templates

81

9.5

Der View-Layer

83

9.6

Der Controller-Layer

83

9.6.1

Controller mit Aktionen

84

9.6.2

Die Standard-Aktion

85

9.7

Zusammenfassung

87

9.8

Testen Sie Ihr Wissen!

87

9.9

Übungen

87

Klassenbasierte Controller

92

10.1

Einleitung

92

10.2

Eine klassenbasierte Fallunterscheidung

92

10.2.1

Schritt 1

92

10.2.2

Schritt 2

93

10.2.3

Schritt 3

94

10.2.4

Schritt 4

97

10.2.5

Schritt 5

99

10.3

Vererbung

101

10.4

Two-Step-Rendering

103

10.5

Zusammenfassung

105

10.6

Übungen

105

10.7

Optionale Übungen

106

Objekt-relationales Mapping

107

11.1

Das Problem

107

11.2

Verbreitete ORM-Entwurfsmuster

107

11.2.1

Active Record

108

11.2.2

Data Mapper

109

11.3

Zusammenfassung

109

11.4

Testen Sie Ihr Wissen!

110

11.5

Übungen

110

Active Record

111

12.1

Das Problem

111

12.2

Die Beispiel-Datenbank

111

12.3

Datenbank-Verbindung aufbauen

113

12.4

SELECT-Statements in PHP abbilden

114

12.4.1

findeAlle()

115

12.4.2

finde()

116

12.5

Das Speichern von Objekten

117

12.5.1

INSERT-Statements in PHP abbilden

118

12.5.2

UPDATE-Statements in PHP abbilden

119

12.6

DELETE-Statements in PHP abbilden

119

12.7

Zusammenfassung

120

12.8

Testen Sie Ihr Wissen!

122

12.9

Übungen

123

12.10

Optionale Übungen

123

13

14

15

16

Optimierungen

124

13.1

Das Problem

124

13.2

Autoloading

124

13.3

Das Formular

125

13.4

Testen Sie Ihr Wissen!

127

13.5

Übungen

128

Traits

129

14.1

Das Problem

129

14.2

Copy & Paste vom Compiler

129

14.3

ActiveRecordable

129

14.3.1

Autoloading

131

14.3.2

Trait-Verwendung

132

14.4

Findable

133

14.5

Persistable

134

14.6

Deletable

136

14.7

Zusammenfassung

136

14.8

Übungen

138

Anhang: Programmierrichtlinien

139

15.1

Einleitung

139

15.2

Richtlinien? Wieso? Weshalb? Warum?

139

15.3

Hintergrund

140

15.4

Die Empfehlungen

140

15.4.1

PSR-1: Framework-Interoperabilität

140

15.4.2

PSR-2: Stilistische Programmierrichtlinien

141

15.4.3

Ergänzungen aus den Symfony-Standards

142

15.4.4

Eigene Ergänzungen

143

Anhang: Weiterführende Informationen

145

16.1

Einführung

145

16.2

Weblinks

145

16.2.1

www.php.net

145

16.2.2

www.phpdeveloper.org

145

16.2.3

devzone.zend.com

145

Lösungen der Übungsaufgaben

146

Index

153

59

Magische Methoden In dieser Lektion lernen Sie ➤ ➤ ➤ ➤

was eine magische Methode ist. wann die magischen Methoden __toString() und __construct() aktiviert werden. was beim Aufruf von new eigentlich passiert. wie Konstruktoren Ihnen das Erzeugen von Objekten erleichtern.

7.1

Das Problem

Je häufiger Sie mit Objekten arbeiten, desto mehr werden Sie feststellen, dass Sie bestimmte Dinge mit jedem Objekt einer Klasse anstellen. Jedes Mal, wenn Sie ein Person-Objekt erzeugen, rufen Sie danach die Methoden setVorname() und setNachname() auf. Beispiel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27