Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdTheophiel Aalderink Laatst gewijzigd meer dan 6 jaar geleden
1
‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’
Live webcollege ‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’ 1 1
2
Welkom 2 2
3
Programma Adobe Connect
Afsluiting Programma Adobe Connect Vragen en antwoorden-venster Stel hier je technische vragen en inhoudelijke vragen aan de docent. Chatvenster Praat hier met de andere deelnemers. Statusicoon Reageer hiermee op stellingen en vragen van de docent. Opties statusicoon.
4
Wie ben ik? Peter Anema Achtergrond: TU Delft, 30 jaar werkzaam in de medische IT en al 40 jaar aan het programmeren. Docent bij LOI klassikaal, m.n. IT ontwerpen en programmeren. 4 4
5
Opbouw live webcollege
Onderdeel 1 – Best practices Vragenblok onderdeel 1 Onderdeel 2 – OOP Vragenblok onderdeel 2 Onderdeel 3 – Design patterns Vragenblok onderdeel 3 3 x 10 tot 15 minuten 5 5
6
Wie herkent zich hierin?
De code achter mijn pagina's is in de loop van de tijd gegroeid tot honderden regels. 6 6
7
Onderdeel 1 - Best practices
Er is niet één best practice, maar wees consistent. 7 7
8
Codeer volgens een standaard
Framework Interop Group PSR-1 – Basic Coding Standard. PSR-2 – Coding Style Guide. PSR-4 – Autoloader. 8 8
9
Naamgeving Naamgeving in CamelCase.
Variabelen en methoden beginnen met een kleine letter. Klassen beginnen met een hoofdletter. <?php class Persoon { // Properties private $naam; // Methods public function vertelOverJezelf() { print "Ik ben " . $this->naam; } 9 9
10
Indenting en brackets Vier spaties inspringen voor ieder code block.
Brackets op nieuwe regel bij class en function. Brackets aan eind van de regel bij control statements. <?php function printEvenGetallen() { for ($i = 0; $i < 10; $i++) { if ($i % 2 == 0) { print i; } 10 10
11
Files Iedere klasse gaat in een file. persoon.php 11 11 <?php
class Persoon { // Properties private $naam; // Methods public function vertelOverJezelf() print "Ik ben " . $this->naam; } <?php require_once('persoon.php'); 11 11
12
Visibility Specificeer altijd de visibility. Private Public Protected
<?php class Persoon { // Properties private $naam; // Methods public function vertelOverJezelf() print "Ik ben " . $this->naam; } Private Public Protected 12 12
13
Commentaar // inline comments /* */ block comments /** */ DocBlock
Niet te weinig Niet te veel Toegevoegde waarde Refactor <?php /** * Dit is een DocBlock voor de * functie vertelOverJezelf * string $naam Jouw naam string */ function vertelOverJezelf($naam) { // Concatenate greeting and name return "Ik ben " . $naam; } 13 13
14
Dan HTML met minimale PHP.
PHP en HTML <?php $content = doSomething(); // complex calculations ?> <!DOCTYPE HTML> <html> <title>Demo</Title> <body> <?php echo $content; ?> <div id="some_div">Content</div> </body> </html> PHP-code eerst. Dan HTML met minimale PHP. 14 14
15
Vragen? 15 15
16
Scheiden van verantwoordelijkheden
Blok 2 – Object-oriented programming (OOP) Scheiden van verantwoordelijkheden Deel 1 Deel 2 Deel 4 Deel 3 16 16
17
Klasse Naam Eigenschappen & methodes Naam Properties Methods 17 17
18
Klasse als blauwdruk 18 18 Persoon naam geslacht geboortedatum
opleiding vertelOverJezelf() public vertelOverJezelf() { print "Ik ben " . $this->naam; } 18 18
19
Objecten instantiëren
Ik ben Sly Ik ben Guido Ik ben Liberty 19 19
20
In PHP 20 20 <?php class Persoon { // Properties private $naam;
private $geslacht; private $geboortedatum; private $opleiding; // Constructor public __construct($naam) { $this->naam = $naam; } // Methods public vertelOverJezelf() { print "Ik ben " . $this->naam; <?php // Instantiation $persoon1 = new Persoon("Guido"); $persoon2 = new Persoon("Sly"); $persoon3 = new Persoon("Liberty"); // Invoke methodes $persoon1->vertelOverJezelf(); $persoon2->vertelOverJezelf(); $persoon3->vertelOverJezelf(); Ik ben Guido Ik ben Sly Ik ben Liberty 20 20
21
Kaartspel poker 21 21
22
Kaartspel poker PokerHand Hand Kaart Dek 22 22
23
Klassen – Kaartspel poker
Dek Hand PokerHand Kleur Rang Kaarten Kaarten Hand Deel Schud VoegKaartenToe BesteCombinatie 23 23
24
UML – Kaartspel poker 24 24
25
Vragen? 25 25
26
Onderdeel 3 – Design patterns Code smell & anti-patterns
repeating yourself DRY switch $type inheritance magic numbers CONSTANTS God object Refactor Accidental complexity KISS
27
Wie heeft zoiets weleens gedaan?
27 27
28
Factory pattern 28 28 /* Car */ abstract class Car {
public abstract function getType(); } class Sedan extends Car { public function getType() { return 'Sedan'; /* Factory */ interface CarFactory { public function makeCar(); class SedanFactory implements CarFactory { public function makeCar() { return new Sedan(); $factory = new SedanFactory(); $car = $factory->makeCar(); print $car->getType(); 28 28
29
Observer pattern abonneren op veranderingen 29 29
30
Iterator pattern Vaak zijn classes een vorm van collectie.
Met een iterator pattern kun je deze classes gebruiken in foreach. Door het implementeren van enkele methoden: next() en hasNext() 30 30
31
Vragen? 31 31
32
Evaluatie Eerst enkele enquêtevragen en dan ontvangt u nog een extraatje.
33
Afronding Cheat sheet ‘Van scripting naar object-oriented programming met PHP’. 33 33
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.