Sympathisant: Komplettes Projekt in OOP v2

Beitrag lesen

Hai,

Wenn ich eine normale dynamische Klasse habe, kann ich die mittels unset($klassenvariable) wieder zerstören. Wie muss ich das denn bei einer Singleton-Klasse machen? Die bleibt von dem unset($singletonclass) unbeindruckt.

Es ist nicht moeglich eine statische Variable zu zerstoeren. Man kann lediglich die Referenz innerhalb des aktuellen Kontextes zerstoeren. Ein darauffolgendes static Statement stellt die Referenz automatisch wieder her.
Und in unserem Beispiel wird die Singleton-Instanz in einer statischen Variable gehalten - von daher kann sie nicht zerstoert werden. (1)

MfG,
Sympatisant

(1) Beispiel:

<?php  
  
class Singleton  
{  
    static $Instance;	  
	protected $myvar;  
	  
	// private constructor  
    private function __construct( ) {  
        $this->myvar = 'Hello World';  
    }  
  
	// static singleton method  
    public function GetInstance( )  
    {  
        if( !isset( self::$Instance ) )  
        	self::$Instance = new Singleton();  
        return self::$Instance;  
    }  
  
    // Example: unset()  
    // ! Throws Exception !  
    public static function DeleteMe( )  
    {  
        // Fatal error: Attempt to unset static property Singleton::$Instance in [..]  
        unset( self::$Instance );  
    }  
  
    // Edit Output-String  
    public function SetValue( $str )  
    {  
        $this->myvar = $str;  
    }  
  
    // Echo String  
    public function Debug()  
    {  
    	echo $this->myvar.'<br>';  
    }  
	  
	// Example: Desctructor  
	public function __destruct()  
    {  
    	unset( $this->myvar );  
    }  
}  
  
// Get Instance  
$Singleton = Singleton::GetInstance();  
  
// Output String  
echo $Singleton->Debug();  
  
// Set individual Value  
$Singleton->SetValue('Good Bye my World');  
  
// Output String  
echo $Singleton->Debug();  
  
// Try to destroy Singleton-Static-Instance.. will Fail!  
// $Singleton->DeleteMe();  
  
// Do it manually  
unset( $Singleton ); // Hier wird nur die Referenz geloescht, nicht die Static-Instanz  
  
// Get "new" Instance - will still be the Same.  
$Singleton = Singleton::GetInstance();  
  
// Output String  
echo $Singleton->Debug();  
  
  
?>
--
"If the future isn't bright, at least it is colorful"
0 77

Komplettes Projekt in OOP v2

Chris
  • php
  1. 0
    Patrick Figel
  2. 0
    Sympathisant
    1. 0
      Chris
      1. 0
        Sympathisant
        1. 0
          Sven Rautenberg
          1. 0
            Sympathisant
      2. 1
        Sven Rautenberg
        1. 0
          dedlfix
      3. 0
        CHris
  3. 0
    Tom
    1. 0
      Chris
      1. 0
        Tom
      2. 0
        Sympathisant
        1. 0
          Tom
          1. 0
            Sven Rautenberg
            1. 0
              Tom
              1. 0
                Sympathisant
                1. 0
                  Tom
                  1. 0
                    Tom
                    1. 0
                      Sympathisant
                      1. 0
                        Tom
                        1. 0
                          dedlfix
                    2. 0
                      dedlfix
                  2. 0
                    Sympathisant
                    1. 0
                      Tom
                      1. 0
                        Sympathisant
                2. 0
                  Sven Rautenberg
                  1. 0
                    Tom
                    1. 0
                      dedlfix
                3. 0
                  dedlfix
                  1. 0
                    Sympathisant
                    1. 0
                      dedlfix
                      1. 0
                        Sympathisant
              2. 0
                dedlfix
                1. 0
                  Tom
          2. 0
            Sympathisant
        2. 0
          dedlfix
    2. 0
      dedlfix
      1. 0
        Tom
        1. 0
          dedlfix
          1. 0
            Tom
            1. 0
              dedlfix
              1. 0
                Tom
  4. 0

    PDF-Doku für OOP mit PHP5

    Tom
    1. 0
      dedlfix
      1. 0
        Tom
        1. 0
          dedlfix
  5. 0

    Und noch ein eBook für PHP OOP

    Tom
  6. 4
    dedlfix
    1. 0
      Tom
      1. 0
        dedlfix
  7. 0
    Chris
    1. 0
      dedlfix
      1. 0
        Chris
        1. 0
          Tom
          1. 0
            Chris
            1. 0
              Sympathisant
              1. 0
                Tom
        2. 0
          dedlfix
      2. 0
        Chris
        1. 0
          dedlfix
          1. 0
            Chris
            1. 0
              dedlfix
              1. 0
                Chris
                1. 1
                  dedlfix
                  1. 0
                    Chris
                    1. 0
                      dedlfix
                      1. 0
                        Chris
                        1. 0
                          dedlfix
                          1. 0
                            Chris
                            1. 0
                              Tom
                              1. 0
                                dedlfix
                            2. 0
                              dedlfix
                              1. 0
                                Chris
                                1. 0
                                  dedlfix
                                  1. 0
                                    Chris