Object met ander object laten communiceren
Via het 1e opject classes aanroepen in een ander opbject.
Dan zou ik normaal bij het aanmaken van het 2e object een referentie meeposten, maar dat gaat niet helemaal lekker, dit heb ik nu:
In mijn bestand die de classes aanmaakt:
Code (php)
1
2
3
4
2
3
4
<?php
$mysql = new Mysql("user","password","localhost","database");
$login = new Login($mysql);
?>
$mysql = new Mysql("user","password","localhost","database");
$login = new Login($mysql);
?>
En in mijn class login:
Code (php)
Als ik dit uit wil voeren zegt apache dat de functie niet bestaat.
Waarom werkt dit niet, en nog belangrijker hoe zorg ik ervoor dat het wel gaat werken.
Bij voorbaat dank,
Gewijzigd op 01/01/1970 01:00:00 door Aron K
object within objects
Edit: hier nog een voorbeeldje, om je op weg te helpen:
Voorbeeldpagina: Edit: hier nog een voorbeeldje, om je op weg te helpen:
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
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
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
class persoon {
private $naam;
public function __construct ($naam) {
$this->set_naam ($naam);
}
public function set_naam ($naam) {
$this->naam = $naam;
}
public function get_naam () {
return $this->naam;
}
}
class gezin {
private $vader;
private $moeder;
public function __construct ($vader, $moeder) {
$this->set_vader ($vader);
$this->set_moeder ($moeder);
}
public function set_vader ($vader) {
$this->vader = $vader;
}
public function set_moeder ($moeder) {
$this->moeder = $moeder;
}
public function get_vader () {
return $this->vader->get_naam ();
}
public function get_moeder () {
return $this->moeder->get_naam ();
}
}
$vader = new persoon ('pietje');
$moeder = new persoon ('simone');
$gezin = new gezin ($vader, $moeder);
echo '<p>' . $gezin->get_vader () . '</p>';
echo '<p>' . $gezin->get_moeder () . '</p>';
?>
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
class persoon {
private $naam;
public function __construct ($naam) {
$this->set_naam ($naam);
}
public function set_naam ($naam) {
$this->naam = $naam;
}
public function get_naam () {
return $this->naam;
}
}
class gezin {
private $vader;
private $moeder;
public function __construct ($vader, $moeder) {
$this->set_vader ($vader);
$this->set_moeder ($moeder);
}
public function set_vader ($vader) {
$this->vader = $vader;
}
public function set_moeder ($moeder) {
$this->moeder = $moeder;
}
public function get_vader () {
return $this->vader->get_naam ();
}
public function get_moeder () {
return $this->moeder->get_naam ();
}
}
$vader = new persoon ('pietje');
$moeder = new persoon ('simone');
$gezin = new gezin ($vader, $moeder);
echo '<p>' . $gezin->get_vader () . '</p>';
echo '<p>' . $gezin->get_moeder () . '</p>';
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Ok, ik heb die pagina doorgelezen, maar wat daar gedaan wordt is toch precies hetzelfde als wat in mijn script gebeurd?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
public function test(){
$mysql->test();
}
[/code]
$this->mysql->test(); gebruiken.
Overigens een hele begrijpelijke fout als je Java gewend bent ;) In PHP moet je nou eenmaal altijd aangeven dat je een membervariabele bedoeld.
[b]Edit:[/b]
Overigens moet dat ook in je methode Login. En waarschijnlijk moet die methode een constructor zijn en ook op dat punt verschilt PHP weer van Java, bij PHP moet je (nou ja, is het beter om) daar namelijk __construct gebruiken.
public function test(){
$mysql->test();
}
[/code]
$this->mysql->test(); gebruiken.
Overigens een hele begrijpelijke fout als je Java gewend bent ;) In PHP moet je nou eenmaal altijd aangeven dat je een membervariabele bedoeld.
[b]Edit:[/b]
Overigens moet dat ook in je methode Login. En waarschijnlijk moet die methode een constructor zijn en ook op dat punt verschilt PHP weer van Java, bij PHP moet je (nou ja, is het beter om) daar namelijk __construct gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Beiden heel hartelijk bedankt.