Variabele in class
Ik heb in mijn site een class geïnitialiseerd (is dit de correcte term) als volgt:
Nu wil ik in andere classes ook gebruik maken van deze variabele, maar zonder deze telkens als global te moeten aanduiden in elke function.
Bestaat hier een mogelijkheid toe?
Dit werkt niet:
Dit ziet er ongeveer zo 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
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
<?php
class CEngine
{
public $oMySQL, oBlaats;
function __construct
{
$this->oMySQL = new CMySQL($this);
$this->oBlaat = new CBlaat($this);
}
}
class CMySQL
{
private oEngine;
function __construct( CEngine _oEngine )
{
$this->oEngine = _oEngine;
}
}
class CBlaat
{
private oEngine;
function __construct( CEngine _oEngine )
{
$this->oEngine = _oEngine;
}
}
?>
class CEngine
{
public $oMySQL, oBlaats;
function __construct
{
$this->oMySQL = new CMySQL($this);
$this->oBlaat = new CBlaat($this);
}
}
class CMySQL
{
private oEngine;
function __construct( CEngine _oEngine )
{
$this->oEngine = _oEngine;
}
}
class CBlaat
{
private oEngine;
function __construct( CEngine _oEngine )
{
$this->oEngine = _oEngine;
}
}
?>
edit:
In PHP4 moet je even letten op de references, dit:
wordt dan b.v.:
Dit is niet de enige aanpassen voor PHP4!
Als je PHP5 hebt dat gaat het allemaal gewoon werken.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Dit is me even boven t petje...
Ziet er wel mooi uit :p, maar kan je het even uitleggen aub?
Je maakt een classe waaraan je attributen toe kan voegen en kan verwijderen, deze classe in een singleton.
Dan kan je in elke classe deze attributen uit deze singleton class lezen, en zijn ze dus door heel je website beschikbaar.
Ik zal de classe die ik altijd gebruik bij scripts zetten, misschien heb je er wat aan, zal het in ieder geval wat duidelijker maken.
Deze manier lijkt wel veel op die van martijn, alleen is het misschien is het wat flexibeler.
Gewijzigd op 01/01/1970 01:00:00 door stien ss
Dus:
Als ik deze regels:
Code (php)
toepas (met de juiste namen) dan zou het moeten lukken?
Is dat dan in mijn geval:
PDO als database class. Dat is in PHP 5 ingebakken, dat is een stuk handiger dan het wiel opnieuw uitvinden.
Succes!
Offtopic: Wanneer je PHP 5 gebruikt, kijk dan ook eens naar Succes!
Dank je, maar dit zal voor een andere keer zijn... of als ik tijd over heb. Maar eens ik wat verder werk aan het eindwerk (nadat de punten zijn gegeven), bekijk ik het eens ;-)
Kan je me toevallig een idee geven of mijn code van net boven jouw post klopt?
Het idee is eigelijk dat in de Engine klasse alles staat wat iedere classe nodig heeft. Iedere klasse beschikt dus over letterlijk dezelfde engine(ofwel gereedschapkist). Als je alleen je database klasse als centrale klasse wilt zien dan zou ik van de engine je database klasse maken. Maar ik denk dat je wel meer dingen hebt die je per klasse wilt gebruiken.
Je code zou moeten werken als je PHP5 hebt.