php: array in oop
Hallo,
Op dit moment ben ik bezig met OOP. De bedoeling is dat via een array informatie te zien is. Maar ik krijg geen foutmelding en niks op het scherm.
Verder heb ik twee bestanden.
bestand 1 testscript:
bestand 2 class:
mijn vraag is: kan iemand mij helpen waar de fout zit?
alvast bedankt.
[code]-tags toegevoegd. Zou je deze willen gebruiken wanneer je code post? Alvast bedankt![/modedit].
Op dit moment ben ik bezig met OOP. De bedoeling is dat via een array informatie te zien is. Maar ik krijg geen foutmelding en niks op het scherm.
Verder heb ik twee bestanden.
bestand 1 testscript:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$job = new Beroep();
$job-> addBeroep ('piloot');
$job-> addBeroep ('docent');
echo '', $job-> showBeroep();
?>
$job = new Beroep();
$job-> addBeroep ('piloot');
$job-> addBeroep ('docent');
echo '', $job-> showBeroep();
?>
bestand 2 class:
Code (php)
mijn vraag is: kan iemand mij helpen waar de fout zit?
alvast bedankt.
[code]-tags toegevoegd. Zou je deze willen gebruiken wanneer je code post? Alvast bedankt![/modedit].
Gewijzigd op 18/06/2015 15:52:58 door Wouter J
Code (php)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
public function addBeroep() {
$beroep[] = $beroepen; // -> $beroep is een lokale variabele in de addBeroep method
// -> $beroepen bestaat niet
}
?>
public function addBeroep() {
$beroep[] = $beroepen; // -> $beroep is een lokale variabele in de addBeroep method
// -> $beroepen bestaat niet
}
?>
Het lijkt me handig als je eerst de basis van PHP leert.
Gewijzigd op 18/06/2015 15:50:16 door Wouter J
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
class Beroep{
public $beroep = [];
public function addBeroep($name){
$this->beroep[] = $name;
}
public function showBeroep(){
return count($this->beroep) > 0 ? implode(', ', $this->beroep ) : '';
}
function __toString(){
return $this->showBeroep();
}
}
$v = new Beroep();
$v->addBeroep('a');
$v->addBeroep('b');
echo $v;
?>
class Beroep{
public $beroep = [];
public function addBeroep($name){
$this->beroep[] = $name;
}
public function showBeroep(){
return count($this->beroep) > 0 ? implode(', ', $this->beroep ) : '';
}
function __toString(){
return $this->showBeroep();
}
}
$v = new Beroep();
$v->addBeroep('a');
$v->addBeroep('b');
echo $v;
?>
Gewijzigd op 18/06/2015 21:23:47 door Johan K
Je bent goed bezig en helemaal met OOP.
Nergens voor nodig om prodecurele PHP te leren maar bekijk wel eerst even de basis van PHP.
Je gedachtegang was goed alleen je uitvoering net ff niet.
Ga zo door!
Nergens voor nodig om prodecurele PHP te leren maar bekijk wel eerst even de basis van PHP.
Je gedachtegang was goed alleen je uitvoering net ff niet.
Ga zo door!
Rickert, ik weet niet helemaal waar jij OOP vandaan haalt. 't is een mooie class, niks mis mee. Maar een Beroep object kan geen beroepen toevoegen. Wat meer OOP zou zoiets zijn:
Als je een class maakt met de naam Beroep (enkelvoud), hou het dan ook bij één beroep.
In OOP is het zeer gebruikelijk dat alle 'dingen' (zelfstandige naamwoorden zoals beroep, gebruiker, email, formfield, lijst) een eigen class krijgen die dan één zo een ding kan opslaan. Een dergelijke class wordt ook wel een Entity genoemd.
In OOP is het zeer gebruikelijk dat alle 'dingen' (zelfstandige naamwoorden zoals beroep, gebruiker, email, formfield, lijst) een eigen class krijgen die dan één zo een ding kan opslaan. Een dergelijke class wordt ook wel een Entity genoemd.
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 Profession
{
private $name; // PRIVATE !!!
function __construct($name = '') { // wordt automatisch aangeroepen
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
return $this; // return dit object zodat je later ook dit kunt doen: $beroep->setName('jan')->setEmail('[email protected]');
}
function __toString(){
return $this->name;
}
}
class Person
{
private $name;
private $professions;
function __construct() {
$this->professions = array(); // maak een lege array aan
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function addProfession(Profession $profession)
{
$this->professions[] = $profession;
return $this;
}
public function getProfessions()
{
return $this->professions;
}
}
$person = new Person();
$person->setName('Frank')
->addProfession(new Profession('programmer'))
->addProfession(new Profession('glazenwasser'))
;
echo 'naam: ' . $person->getName() . '<br>';
foreach($person->getProfessions() as $profession)
{
echo 'beroep: ' . $profession->getName() . '<br>';
}
?>
class Profession
{
private $name; // PRIVATE !!!
function __construct($name = '') { // wordt automatisch aangeroepen
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
return $this; // return dit object zodat je later ook dit kunt doen: $beroep->setName('jan')->setEmail('[email protected]');
}
function __toString(){
return $this->name;
}
}
class Person
{
private $name;
private $professions;
function __construct() {
$this->professions = array(); // maak een lege array aan
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function addProfession(Profession $profession)
{
$this->professions[] = $profession;
return $this;
}
public function getProfessions()
{
return $this->professions;
}
}
$person = new Person();
$person->setName('Frank')
->addProfession(new Profession('programmer'))
->addProfession(new Profession('glazenwasser'))
;
echo 'naam: ' . $person->getName() . '<br>';
foreach($person->getProfessions() as $profession)
{
echo 'beroep: ' . $profession->getName() . '<br>';
}
?>




