Probleem met Singleton class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jordi

Jordi

19/05/2005 02:07:00
Quote Anchor link
Voor mijn website heb ik een User-class en een Member-class. De User-class wordt gebruikt om informatie over een bepaalde user te verkrijgen. Bijvoorbeeld als je naar zijn/haar profiel kijkt of als je een topic leest. (dan staat links meestal wat info over de gene die het bericht heeft gepost)

De Member-class wordt gebruikt voor de huidige bezoeker. Hierin zit de mogelijkheid om in te loggen enz. Aangezien een ingelogd persoon ook een user is en het ook handig zou zijn als ik informatie op kon vragen over de ingelogde persoon, extend Member de User-class.
Ik had echter ook bedacht dat je in je eentje maar één keer ingelogd kunt zijn, dus wilde ik van Member een Singleton-class maken. Dat wil dus zeggen dat er maar één instantie van kan zijn. Voorbeeldje:
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
<?php
class Singleton
{
    private static $instance = NULL;
    public static function getInstance () {
        if (self::$instance === NULL)
            self::$instance = new Singleton;
        return self::$instance;
    }


    private function __construct () {}
    private function __clone () {}
}

?>

Zo'n class kun je aanroepen door Singleton::getInstance->doeIets(); of zo. De constructor hoeft niet leeg te zijn, maar wel private, want op die manier is het onmogelijk om zelf een instantie te maken.

Hier zit echter mijn probleem in: de User-class heeft een public constructor en ik wil de Member-class een private constructor geven, maar als ik dat doe, dan krijg ik een error.
Gek genoeg heb ik dit probleem bij mijn database-class niet (die mysqli extend).

Weet iemand wat ik hieraan kan doen?

Bij voorbaat dank.
 
PHP hulp

PHP hulp

25/04/2024 20:00:34
 
Jordi

Jordi

19/05/2005 02:18:00
Quote Anchor link
Ik heb trouwens al geprobeerd de constructor van de Member-class weg te halen (aangezien ik hem toch niet nodig heb), maar dat wil ik eignelijk niet (want ik wil dat hij private is) en bovendien krijg ik dan nog steeds een error omdat hij de constructor van de User-class aan gaat roepen...
Gewijzigd op 19/05/2005 02:45:00 door Jordi
 
Numlockrond

numlockrond

19/05/2005 11:35:00
Quote Anchor link
waarom wil je per se een singleton?? dat is echt niet een geweldige manier van werken ofzo.

Quote:
Gek genoeg heb ik dit probleem bij mijn database-class niet (die mysqli extend).


8uhjk n
 
Numlockrond

numlockrond

19/05/2005 11:36:00
Quote Anchor link
waarom wil je per se een singleton?? dat is echt niet een geweldige manier van werken ofzo.

Quote:
Gek genoeg heb ik dit probleem bij mijn database-class niet (die mysqli extend).


maar daar is de constructor niet private, of je bent verkeerd bezig.
 
Jordi

Jordi

19/05/2005 12:27:00
Quote Anchor link
De constructor van mysqli is niet private, maar ik heb van mijn database-class ook een singleton gemaakt, dus is daar de constructor ook private van.
 



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.