global in object

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaron T

Jaron T

21/12/2010 16:48:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Module
{
    private $db, $user;

    function
__construct()
    {

        
        $this->db = new Database();

        global $user;
        $this->user = $user;

    }

    function
test()
    {

        $this->user->getUser();
    }
}

?>


Met bovenstaade code kan ik mijn $user object aanspreken in mijn module class. Kan dit niet op een andere of kortere manier? (global $user$this->user = $user;)



thanks
Gewijzigd op 21/12/2010 16:51:54 door Jaron T
 
PHP hulp

PHP hulp

20/04/2024 02:56:29
 

21/12/2010 16:51:24
Quote Anchor link
Geen global gebruiken.
Is vies.
 
Jaron T

Jaron T

21/12/2010 16:52:22
Quote Anchor link
Karl Karl op 21/12/2010 16:51:24:
Geen global gebruiken.
Is vies.


Oke Karl... wat moet ik dan wel gebruiken? .. of elke keer een new User() aanroepen in de constructor?
Gewijzigd op 21/12/2010 16:52:42 door Jaron T
 
TJVB tvb

TJVB tvb

21/12/2010 16:52:31
Quote Anchor link
Wat wil je precies doen?
En global gebruiken is normaal gesproken niet juist.
Je kunt ook aan de constructor gewoon parameters meegeven.
 

21/12/2010 16:52:55
Quote Anchor link
TJVB tvb op 21/12/2010 16:52:31:
Wat wil je precies doen?
En global gebruiken is normaal gesproken niet juist.
Je kunt ook aan de constructor gewoon parameters meegeven.


Idd, of gewoon een setter die een getter aanroept.
 
Jaron T

Jaron T

21/12/2010 16:53:49
Quote Anchor link
TJVB tvb op 21/12/2010 16:52:31:
Wat wil je precies doen?
En global gebruiken is normaal gesproken niet juist.
Je kunt ook aan de constructor gewoon parameters meegeven.


mijn user class benaderen zonder elke keer new User() te moeten gebruiken in elke class...

of gewoon in elke constructor het user object meesturen?
 
TJVB tvb

TJVB tvb

21/12/2010 16:55:31
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Module
{
    private $user;

    public function __cosntruct($user)
    {

        $this->user = $user;
    }
}

//ik heb geen idee waar je user vandaan haalt
$module = new Module($user);
?>


Voor elke Module een nieuw database object lijkt mij niet logisch.
 
Jaron T

Jaron T

21/12/2010 17:01:19
Quote Anchor link
Ja oke, maar ik creëer 1x het $module object met daarna bijvoorbeeld een functie getAllModules() .. of kan ik beter de database connectie ook meesturen bij de contstructor van new Module() ?

(dit betekent dat ik bij ELKE class die gebruik maakt van een database het database object mee moet sturen in de constructor? en deze niet initialiseren in de constructor van de class zelf.)
Gewijzigd op 21/12/2010 17:05:54 door Jaron T
 
TJVB tvb

TJVB tvb

22/12/2010 09:19:08
Quote Anchor link
Ligt eraan hoe je de database class werkt.
Ik benader de database via Database::getInstance()->deFunctieDieJeWiltGebruiken()
 
SilverWolf NL

SilverWolf NL

22/12/2010 09:31:10
Quote Anchor link
TJVB tvb op 22/12/2010 09:19:08:
Ligt eraan hoe je de database class werkt.
Ik benader de database via Database::getInstance()->deFunctieDieJeWiltGebruiken()


Dat doet denken dat je een singleton gebruikt voor je Database, en dat is eigenlijk niet juist. Hoewel het meestal zo is dat je maar verbinding maakt met een database, zijn er gevallen waarin je met meerdere databases moet werken. Dan gaat het hele idee van een singleton niet meer op. Singletons moet je vrijwel nooit gebruiken, tenzij je in alle gevallen maar een object mag hebben (bijvoorbeeld een OO-cookiejar).

Edit:

Kan natuurlijk ook zo zijn dat je je database-object zo altijd tevoorschijn haalt, maar het geen singleton is. In dat geval zou je eens moeten kijken naar een register, dat vind ik fijn werken.
Gewijzigd op 22/12/2010 09:32:39 door SilverWolf NL
 
TJVB tvb

TJVB tvb

22/12/2010 09:33:33
Quote Anchor link
SilverWolf NL op 22/12/2010 09:31:10:
Dat doet denken dat je een singleton gebruikt voor je Database, en dat is eigenlijk niet juist. Hoewel het meestal zo is dat je maar verbinding maakt met een database, zijn er gevallen waarin je met meerdere databases moet werken. Dan gaat het hele idee van een singleton niet meer op. Singletons moet je vrijwel nooit gebruiken, tenzij je in alle gevallen maar een object mag hebben (bijvoorbeeld een OO-cookiejar).


Niet helemaal, dat is de versimpelde beschrijving van mijn situatie, ik geef optioneel ook nog een config naam mee (of zet die vantevoren)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.