member functies
Ik heb een class gemaakt om de query's en dergelijken te laten uitvoeren enzo. Deze werkt perfect. Nou heb ik deze aangeroepen op index.php door $db = new database().
Op index.php include ik ook een class die data van de ingelogde gebruiker opvraagd. Nou wil ik hier in die class een query uitvoeren en ik doe dat zo: $res = $db->runQuery("SELECT blabla") Maar ik kan de functie runQuery niet uitvoeren omdat dit een member functie zou zijn. Ik heb van runQuery een public functie gemaakt. Waarom kan ik die dan niet aanroepen in een andere class?
Dus ik include database.class.php op index.php en voer hem uit door $db = new->database(); De variabele db moet dus beschikbaar zijn in een andere class.
Complete error: Fatal error: call to a member function runQuery() on a non-object in .....
Op index.php include ik ook een class die data van de ingelogde gebruiker opvraagd. Nou wil ik hier in die class een query uitvoeren en ik doe dat zo: $res = $db->runQuery("SELECT blabla") Maar ik kan de functie runQuery niet uitvoeren omdat dit een member functie zou zijn. Ik heb van runQuery een public functie gemaakt. Waarom kan ik die dan niet aanroepen in een andere class?
Dus ik include database.class.php op index.php en voer hem uit door $db = new->database(); De variabele db moet dus beschikbaar zijn in een andere class.
Complete error: Fatal error: call to a member function runQuery() on a non-object in .....
Gewijzigd op 01/01/1970 01:00:00 door Mark D
Gesponsorde koppelingen:
Je zal je object mee moeten geven (bijvoorbeeld via de constructor) om 'm in de andere class beschikbaar te hebben.
Voorbeeld:
Voorbeeld:
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
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
<?php
class Foo{
private $m_sMessage;
public function __construct($p_sMessage){
$this->m_sMessage = $p_sMessage;
}
public function getMessage(){
return $this->m_sMessage;
}
}
class Bar{
private $m_oFoo;
public function __construct($p_oFoo){
$this->m_oFoo = $p_oFoo;
}
public function __toString(){
echo $this->m_oFoo->getMessage();
}
}
$oFoo = new Foo('Doe maar iets.');
$oBar = new Bar($oFoo);
$oBar->__toString();
// Output: Doe maar iets.
?>
class Foo{
private $m_sMessage;
public function __construct($p_sMessage){
$this->m_sMessage = $p_sMessage;
}
public function getMessage(){
return $this->m_sMessage;
}
}
class Bar{
private $m_oFoo;
public function __construct($p_oFoo){
$this->m_oFoo = $p_oFoo;
}
public function __toString(){
echo $this->m_oFoo->getMessage();
}
}
$oFoo = new Foo('Doe maar iets.');
$oBar = new Bar($oFoo);
$oBar->__toString();
// Output: Doe maar iets.
?>
Gewijzigd op 01/01/1970 01:00:00 door Bo az
@Boaz waar is $this->m_oFoo;
die voor?
Een andere mogelijkheid zou ook een inheritance kunnen zijn..
dus class bar extends foo
dan is de functie ook beschikbaar.
Echter in dit geval zou ik het niet doen omdat er dan heel veel instances een DB connectie opbouwen.
die voor?
Een andere mogelijkheid zou ook een inheritance kunnen zijn..
dus class bar extends foo
dan is de functie ook beschikbaar.
Echter in dit geval zou ik het niet doen omdat er dan heel veel instances een DB connectie opbouwen.
S***, ik wist dat ik het niet in één keer foutloos kon, maar wilde het toch proberen. Het moest natuurlijk private $m_oFoo; zijn.
Ga 'm nog even testen, misschien is er nog wel meer fout :P
Owja, inheritance moet je natuurlijk alleen toepassen als er een verband is. (auto extends voertuig etc.)
Ga 'm nog even testen, misschien is er nog wel meer fout :P
Edit:
Er zaten verder geen fouten in, hij werkt nu.
Owja, inheritance moet je natuurlijk alleen toepassen als er een verband is. (auto extends voertuig etc.)
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Dat je inheritance alleen in een soort hiërarchie toepast zal duidelijk zijn. Maar Mark zijn vraag was naar mijn idee meer algemeen van aard m.b.t. het gebruik van classes en dan zou ik altijd wijzen op het gebruik van inheritance. Juist ook omdat het hergebruik van code bevorderd.
Groet Cees
Groet Cees



