PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Singleton (http://www.selfphp.de/forum/showthread.php?t=7317)

Taresto 30.03.2004 14:59:58

Singleton
 
Ich bin gerade etwas mit Singletons am üben, da ich diese verwenden möchte.
Funktionieren tuts auch, nur habe ich jetzt da irgendwie ein Verständnisproblem warum der counter, welcher im Singleton integriert ist, nicht hinaufzählt.
Vielleicht kann mir ja jemand helfen den Knopf zu lösen.

Hier die Singleton-Klasse:
PHP-Code:

<?php
class Singleton {

    var 
$count;
    
    function 
Singleton(){
        
$this->count 0;
    }
    
    function 
count(){
        
$this->count $this->count+1;
        
$c $this->count;
        return 
$c;
    }

    function &
singInstance() {
        static 
$instance;
        if(!
$instance) {
            
$instance = new Singleton();
        }
        return 
$instance;
    }
}
?>

Die ausführende Klasse:
PHP-Code:

<?php
require_once 'Singelton.php';

class  
TestSingelton{
    var 
$count;
    var 
$string;
    function 
TestSingelton($string){
        
$this->string $string;
        
$this->count 0;
    }
    
    function 
echoCount(){
        
$sing Singleton::singInstance();
        echo 
'Klasse: '.$this->string.'; count: '.$this->count++.'; singelton-count: '.$sing->count().'<br>';
    }
}

$ts1 = new TestSingelton('TS_1');
$ts2 = new TestSingelton('TS_2');
$ts3 = new TestSingelton('TS_3');

$ts1->echoCount();
$ts2->echoCount();
$ts3->echoCount();
$ts1->echoCount();
$ts2->echoCount();
$ts3->echoCount();
$ts3->echoCount();
$ts2->echoCount();
$ts1->echoCount();
?>

Die ausgabe ist:
Zitat:

Klasse: TS_1; count: 0; singelton-count: 1
Klasse: TS_2; count: 0; singelton-count: 1
Klasse: TS_3; count: 0; singelton-count: 1
Klasse: TS_1; count: 1; singelton-count: 1
Klasse: TS_2; count: 1; singelton-count: 1
Klasse: TS_3; count: 1; singelton-count: 1
Klasse: TS_3; count: 2; singelton-count: 1
Klasse: TS_2; count: 2; singelton-count: 1
Klasse: TS_1; count: 2; singelton-count: 1
nochmals, warum zählt der singleton-counter nicht hoch??
danke jetzt schon für eure hilfe
mfg reto

Fuchs 02.04.2004 16:29:44

Na wenn schon mit referenzen dann doch bitte immer:

Code:

$instance =& Singleton::singInstance();
          ^

PS: getInstance() ist ein eingebuergerter Name fuer so eine Methode.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:43:00 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.