php: array in oop
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
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!
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>';
}
?>