OOP leren
Pagina: « vorige 1 2 3 4 volgende »
hierbij:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include("oop.php");
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
try
{
$db = new PDO('mysql:host=localhost;dbname=vuvuzela_db','vuvuzela_db','**');
$log = new UserSessionController($db);
$log->login($_POST['user'],$_POST['pass']);
}
catch(Exception $e)
{
echo "Kuuuuut: " . $e->getMessage();
}
}
?>
<form method="post">
<input type='text' name="user" /><br />
<input type='password' name='pass' /><br />
<input type='submit' />
</form>
error_reporting(E_ALL);
ini_set("display_errors", 1);
include("oop.php");
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
try
{
$db = new PDO('mysql:host=localhost;dbname=vuvuzela_db','vuvuzela_db','**');
$log = new UserSessionController($db);
$log->login($_POST['user'],$_POST['pass']);
}
catch(Exception $e)
{
echo "Kuuuuut: " . $e->getMessage();
}
}
?>
<form method="post">
<input type='text' name="user" /><br />
<input type='password' name='pass' /><br />
<input type='submit' />
</form>
Gewijzigd op 01/01/1970 01:00:00 door Roeltje M
Gesponsorde koppelingen:
Hmm. Als je geen errors en warnings, en zelfs geen notices krijgt denk ik niet dat er iets mis is met de code zelf. Klopt de database, kloppen de waarden in de database? Als je een login-formulier op de meest simpele manier maakt, werkt het dan wel?
Het werkt! Bedankt! kan ik weer verder!
Hoe vertaal ik dit in OOP: http://yfrog.com/0h69493364j?
Moet ik dan een classname met LadeController en LoperController of zit ik dan verkeerd te denken?
Hoe vertaal ik dit in OOP: http://yfrog.com/0h69493364j?
Moet ik dan een classname met LadeController en LoperController of zit ik dan verkeerd te denken?
Gewijzigd op 01/01/1970 01:00:00 door Roeltje M
Nog even terugkomen op een oude vraag van je:
Het beste is wat je zelf het handigst vindt werken.
Zelf vind ik het vaak verschrikkelijk onleesbaar als alle variabelen buiten de quotes worden gehaald. Vooral als je een SQL-query met 20 variabelen aan het maken bent, krijg je een oerwoud van komma's en quotes. Het kost dan onnodig tijd om te zoeken waar je ergens een quote'je verkeerd hebt neergezet ;-)
Wat PHP betreft hoef je je niet druk te maken of het onnodig tijd kost. De verschillen zijn verwaarloosbaar, omdat in het ene geval PHP enkele microseconden langer bezig zal zijn om de string te expanderen, en in het andere geval enkele microseconden langer nodig heeft om de string te parsen. Uiteindelijk scheelt het niets.
Als je wilt optimaliseren, kun je dat beter op iets anders doen. OOP overboord gooien, bijvoorbeeld.
roel schreef op 20.07.2009 22:03:
d. Wat is beter, variabelen BUITEN de echo halen of gewoon erin laten staan (omdat het ook werkt en het onnodig tijd kost?
Het beste is wat je zelf het handigst vindt werken.
Zelf vind ik het vaak verschrikkelijk onleesbaar als alle variabelen buiten de quotes worden gehaald. Vooral als je een SQL-query met 20 variabelen aan het maken bent, krijg je een oerwoud van komma's en quotes. Het kost dan onnodig tijd om te zoeken waar je ergens een quote'je verkeerd hebt neergezet ;-)
Wat PHP betreft hoef je je niet druk te maken of het onnodig tijd kost. De verschillen zijn verwaarloosbaar, omdat in het ene geval PHP enkele microseconden langer bezig zal zijn om de string te expanderen, en in het andere geval enkele microseconden langer nodig heeft om de string te parsen. Uiteindelijk scheelt het niets.
Als je wilt optimaliseren, kun je dat beter op iets anders doen. OOP overboord gooien, bijvoorbeeld.
Gewijzigd op 01/01/1970 01:00:00 door Willem vp
Hoe vertaal ik dit in OOP: http://yfrog.com/0h69493364j?
Moet ik dan een classname met LadeController en LoperController of zit ik dan verkeerd te denken?
Moet ik dan een classname met LadeController en LoperController of zit ik dan verkeerd te denken?
Als je praat over Controllers, praat je over MVC en dat is een OOP design pattern. Als je echt OOP wilt leren, verdiep je dan eerst in de grondbeginselen.
Als je alleen maar een site voor jezelf nodig hebt, hoef je geen OOP te leren. De voordelen van OOP komen pas tevoorschijn als je projecten schaalbaar moeten worden en als je met meer dan 1 persoon aan een project werkt.
Als je alleen maar een site voor jezelf nodig hebt, hoef je geen OOP te leren. De voordelen van OOP komen pas tevoorschijn als je projecten schaalbaar moeten worden en als je met meer dan 1 persoon aan een project werkt.
Ik heb me al enkele keren verdiept in tutorials over OOP (ook die van hier). En dit is geen site voor mezelf ;)
Oké, maar begin dan met simpele dingen. Een winkelwagen is meteen al vrij ingewikkeld.
Edit 1:
Opdracht: schrijf een PHP OOP programma'tje dat een koe laat loeien, een leeuw laat brullen, en een geit laat mekkeren.
Edit 2:
Morgenavond geef ik mijn oplossing, voor wie het weten wil.
Edit 1:
Opdracht: schrijf een PHP OOP programma'tje dat een koe laat loeien, een leeuw laat brullen, en een geit laat mekkeren.
Edit 2:
Morgenavond geef ik mijn oplossing, voor wie het weten wil.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Matthias schreef op 26.08.2009 08:22:
Ik had mijn versie ingediend,
maar hij staat er niet meer tussen.
maar hij staat er niet meer tussen.
Gek he? Alleen OOP please.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Ik zit dit topic ook te volgen omdat ik toch maar weer begonnen ben OOP op te pakken, hier mijn invulling. Volgens mij heb ik de methods niet goed gedaan, maar weet ook niet precies hoe ik dat in moet vullen.
Voor zover ik het heb begrepen heb je een classe "Dier".. Immers een koe, geit en leeuw zijn allemaal dieren. Nu heb ik een koe/ geit en leeuw class gemaakt die allen de "Dier" class extenden. Of dat een goede opzet is betwijfel ik ten zeerste.
Voor zover ik het heb begrepen heb je een classe "Dier".. Immers een koe, geit en leeuw zijn allemaal dieren. Nu heb ik een koe/ geit en leeuw class gemaakt die allen de "Dier" class extenden. Of dat een goede opzet is betwijfel ik ten zeerste.
Code (php)
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
28
29
30
31
32
33
34
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
28
29
30
31
32
33
34
<?php
class Dier
{
public $naam;
public $type;
function Dier($naam = 'Dier', $soort = 'Dier')
{
$this->naam = $naam;
$this->type = $soort;
}
}
class Koe extends Dier
{
function Geluid()
{
$this->Geluid = 'Meeuuuhhh';
}
}
class Leeuw extends Dier
{
function Geluid()
{
$this->Geluid = 'Roaaar';
}
}
class Geit extends Dier
{
function Geluid()
{
$this->Geluid = 'Mèèèèè';
}
}
?>
class Dier
{
public $naam;
public $type;
function Dier($naam = 'Dier', $soort = 'Dier')
{
$this->naam = $naam;
$this->type = $soort;
}
}
class Koe extends Dier
{
function Geluid()
{
$this->Geluid = 'Meeuuuhhh';
}
}
class Leeuw extends Dier
{
function Geluid()
{
$this->Geluid = 'Roaaar';
}
}
class Geit extends Dier
{
function Geluid()
{
$this->Geluid = 'Mèèèèè';
}
}
?>
Ik kom op zoiets uit:
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
class Dier
{
private $naam;
private $type;
private $geluid;
function Dier($naam = null, $soort = null)
{
$this->naam = $naam;
$this->type = $soort;
}
function getNaam()
{
return $this->naam;
}
function getSoort()
{
return $this->type;
}
function getGeluid()
{
return $this->geluid;
}
}
class Koe extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'koe');
$this->geluid = 'Meeuuuhhh';
}
}
class Leeuw extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'leeuw');
$this->geluid = 'Roaaar';
}
}
class Geit extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'geit');
$this->geluid = 'Mèèèèè';
}
}
$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();
// en hier dan hetzelfde voor de leeuw en geit
?>
class Dier
{
private $naam;
private $type;
private $geluid;
function Dier($naam = null, $soort = null)
{
$this->naam = $naam;
$this->type = $soort;
}
function getNaam()
{
return $this->naam;
}
function getSoort()
{
return $this->type;
}
function getGeluid()
{
return $this->geluid;
}
}
class Koe extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'koe');
$this->geluid = 'Meeuuuhhh';
}
}
class Leeuw extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'leeuw');
$this->geluid = 'Roaaar';
}
}
class Geit extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'geit');
$this->geluid = 'Mèèèèè';
}
}
$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();
// en hier dan hetzelfde voor de leeuw en geit
?>
Gewijzigd op 01/01/1970 01:00:00 door Mark D
Kijk, twee voorbeelden al. Hopelijk komen er nog een paar bij, want op deze manier leer je volgens mij het snelst ;-)
Ik heb nog een aanpassing gedaan. Ik heb het setten van de geluid variabele uit de constructor gehaald, aangezien dat volgens de posts van Jelmer daar niet hoort.
Ik hoor vanavond/morgen graag welke er beter is ;) (ook de reden waarom ik de oude laat staan en mn post niet edit)
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
class Dier
{
private $naam;
private $type;
private $geluid;
function Dier($naam = null, $soort = null)
{
$this->naam = $naam;
$this->type = $soort;
}
function getNaam()
{
return $this->naam;
}
function getSoort()
{
return $this->type;
}
}
class Koe extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'koe');
}
function getGeluid()
{
return 'Meeuuuhhh';
}
}
class Leeuw extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'leeuw');
}
function getGeluid()
{
return 'Roaaar';
}
}
class Geit extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'geit');
}
function getGeluid()
{
return 'Mèèèèè';
}
}
$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();
// en hier dan hetzelfde voor de leeuw en geit
?>
class Dier
{
private $naam;
private $type;
private $geluid;
function Dier($naam = null, $soort = null)
{
$this->naam = $naam;
$this->type = $soort;
}
function getNaam()
{
return $this->naam;
}
function getSoort()
{
return $this->type;
}
}
class Koe extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'koe');
}
function getGeluid()
{
return 'Meeuuuhhh';
}
}
class Leeuw extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'leeuw');
}
function getGeluid()
{
return 'Roaaar';
}
}
class Geit extends Dier
{
function __construct($naam)
{
parent::__construct($naam, 'geit');
}
function getGeluid()
{
return 'Mèèèèè';
}
}
$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();
// en hier dan hetzelfde voor de leeuw en geit
?>
Ik hoor vanavond/morgen graag welke er beter is ;) (ook de reden waarom ik de oude laat staan en mn post niet edit)
Gewijzigd op 01/01/1970 01:00:00 door Mark D
In die regels wordt een variabele ($koe) aangemaakt die een object van een koe met de naam bella. Op de 2e regel wordt van deze koe de naam opgevraagd (bella), de soort (koe) en het geluid (Meeuuuhhh) en dit wordt in een zinnetje geplakt.
Gewijzigd op 01/01/1970 01:00:00 door Mark D
Gesponsorde koppelingen:
Oeh, kan het nog? Niet te laat? Mijn inzending. Geen design patterns, niets nuttigs uit te leren als je websites wilt maken, maar omdat het kan...
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
class Positie
{
protected $x;
protected $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function x()
{
return $this->x;
}
public function y()
{
return $this->y;
}
public function is_equal_to(Positie $other)
{
return $this->x == $other->x && $this->y == $other->y;
}
}
interface Roepbaar
{
public function roepnaam();
}
interface Verplaatsbaar
{
public function verplaats_naar(Positie $positie);
}
interface Hoorbaar
{
public function maak_geluid();
}
abstract class Dier /* extends Levend_Wezen? */
{
protected $positie;
public function __construct(Positie $positie)
{
$this->positie = $positie;
}
public function rijk()
{
return 'Dierenrijk';
}
abstract public function soort();
}
class Slak extends Dier implements Verplaatsbaar
{
public function soort()
{
return 'Slak';
}
public function verplaats_naar(Positie $b)
{
if($this->positie->is_equal_to($b))
return true;
$this->beweeg_duizenden_beendjes_in_de_richting_van($b);
}
}
class Huishond extends Dier implements Verplaatsbaar, Hoorbaar, Roepbaar
{
private $roepnaam;
public function __construct($roepnaam, Positie $positie)
{
$this->roepnaam = $roepnaam;
parent::__construct($positie);
}
public function soort()
{
return 'Kuthondje'; // ja, dat is een soort
}
public function verplaats_naar(Positie $b)
{
if($this->positie->is_equal_to($b))
return true;
$this->beweeg_vier_pootjes_en_klieder_alles_onder_met_slijm($b);
}
public function maak_geluid()
{
echo 'Ugh ugh!';
}
public function roepnaam()
{
return $this->roepnaam;
}
}
$huisslak = new Slak(new Positie(0, 0));
$puk = new Huishond('Puk', new Positie(0, 2));
?>
class Positie
{
protected $x;
protected $y;
public function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function x()
{
return $this->x;
}
public function y()
{
return $this->y;
}
public function is_equal_to(Positie $other)
{
return $this->x == $other->x && $this->y == $other->y;
}
}
interface Roepbaar
{
public function roepnaam();
}
interface Verplaatsbaar
{
public function verplaats_naar(Positie $positie);
}
interface Hoorbaar
{
public function maak_geluid();
}
abstract class Dier /* extends Levend_Wezen? */
{
protected $positie;
public function __construct(Positie $positie)
{
$this->positie = $positie;
}
public function rijk()
{
return 'Dierenrijk';
}
abstract public function soort();
}
class Slak extends Dier implements Verplaatsbaar
{
public function soort()
{
return 'Slak';
}
public function verplaats_naar(Positie $b)
{
if($this->positie->is_equal_to($b))
return true;
$this->beweeg_duizenden_beendjes_in_de_richting_van($b);
}
}
class Huishond extends Dier implements Verplaatsbaar, Hoorbaar, Roepbaar
{
private $roepnaam;
public function __construct($roepnaam, Positie $positie)
{
$this->roepnaam = $roepnaam;
parent::__construct($positie);
}
public function soort()
{
return 'Kuthondje'; // ja, dat is een soort
}
public function verplaats_naar(Positie $b)
{
if($this->positie->is_equal_to($b))
return true;
$this->beweeg_vier_pootjes_en_klieder_alles_onder_met_slijm($b);
}
public function maak_geluid()
{
echo 'Ugh ugh!';
}
public function roepnaam()
{
return $this->roepnaam;
}
}
$huisslak = new Slak(new Positie(0, 0));
$puk = new Huishond('Puk', new Positie(0, 2));
?>
Mijn variant:
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
interface Geluid {
public function laatHoren ();
}
abstract class Dier {
public $geluid;
public function __construct ($geluid) {
$this->geluid = $geluid;
}
}
class Loeien implements Geluid {
public function laatHoren () {
return '<p>boeoeoeoe!</p>';
}
}
class Brullen implements Geluid {
public function laatHoren () {
return '<p>groaaaar!</p>';
}
}
class Mekkeren implements Geluid {
public function laatHoren () {
return '<p>bèèèèèèèèh!</p>';
}
}
class Stil implements Geluid {
public function laatHoren () {
return '<p>...</p>';
}
}
class Koe extends Dier {
// verdere functionaliteit die alleen op koeien van toepassing is
}
class Leeuw extends Dier {
// verdere functionaliteit die alleen op leeuwen van toepassing is
}
class Tijger extends Dier {
}
class Geit extends Dier {
// verdere functionaliteit die alleen op geiten van toepassing is
}
class Regenwurm extends Dier {
// verdere functionaliteit die alleen op regenwurmen van toepassing is
}
$koe = new Koe (new Loeien ());
$leeuw = new Leeuw (new Brullen ());
$tijger = new Tijger (new Brullen ());
$geit = new Geit (new Mekkeren ());
$regenwurm = new Regenwurm (new Stil ());
echo $koe->geluid->laatHoren ();
echo $leeuw->geluid->laatHoren ();
echo $tijger->geluid->laatHoren ();
echo $geit->geluid->laatHoren ();
echo $regenwurm->geluid->laatHoren ();
?>
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
interface Geluid {
public function laatHoren ();
}
abstract class Dier {
public $geluid;
public function __construct ($geluid) {
$this->geluid = $geluid;
}
}
class Loeien implements Geluid {
public function laatHoren () {
return '<p>boeoeoeoe!</p>';
}
}
class Brullen implements Geluid {
public function laatHoren () {
return '<p>groaaaar!</p>';
}
}
class Mekkeren implements Geluid {
public function laatHoren () {
return '<p>bèèèèèèèèh!</p>';
}
}
class Stil implements Geluid {
public function laatHoren () {
return '<p>...</p>';
}
}
class Koe extends Dier {
// verdere functionaliteit die alleen op koeien van toepassing is
}
class Leeuw extends Dier {
// verdere functionaliteit die alleen op leeuwen van toepassing is
}
class Tijger extends Dier {
}
class Geit extends Dier {
// verdere functionaliteit die alleen op geiten van toepassing is
}
class Regenwurm extends Dier {
// verdere functionaliteit die alleen op regenwurmen van toepassing is
}
$koe = new Koe (new Loeien ());
$leeuw = new Leeuw (new Brullen ());
$tijger = new Tijger (new Brullen ());
$geit = new Geit (new Mekkeren ());
$regenwurm = new Regenwurm (new Stil ());
echo $koe->geluid->laatHoren ();
echo $leeuw->geluid->laatHoren ();
echo $tijger->geluid->laatHoren ();
echo $geit->geluid->laatHoren ();
echo $regenwurm->geluid->laatHoren ();
?>
Matthias schreef op 26.08.2009 18:51:
wat is allemaal het verschil tussen private / public functions??
Een public functie mag aangeroepen worden
- binnen zijn eigen class
- binnen childclasses
- buiten een class
Een protected functie mag aangeroepen worden
- binnen zijn eigen class
- binnen childclasses
Een private functie mag aangeroepen worden
- binnen zijn eigen class


