phpbar.de logo

Mailinglisten-Archive

[php] Statische methoden in PHP4

[php] Statische methoden in PHP4

Steffen Kother steffen.kother at gmx.net
Fre Feb 11 11:51:20 CET 2005


Hi Sebastian,

$singleton muss nicht mal auf NULL gesetzt werden, bedingt aber bei 
Rückgabe eine Prüfng ob in $singleton was drin steht oder nciht. Hier 
mal mein bissl Singleton-Code. Funktioniert bei mir wunderbar:

<Code>
function &singleton($class) {
    static $singleton;
    if (empty($singleton[$class]) || !is_object($singleton[$class])) 
$singleton[$class] = new singleton($class);
    return $singleton[$class]->instances[$class];
}

class singleton {
    var $pointer = '';
    var $instances = array();

    function singleton($class) {
        if (!$this->getInstance($class)) {
            $this->setInstance($class);
        }
        return !empty($this->instances[$class]) ? 
$this->instances[$class] : NULL;
    }

    function setInstance($class) {
        $file = $class.'.class.inc.php';
        $exists = common::checkFileExists($file, explode(';', 
ini_get('include_path')));
        if ($exists) {
            require_once($file);
            if (class_exists($class)) $this->instances[$class] = new 
$class();
            else common::ErrorOutput('Class "'.$class.'" doesn\'t 
exists!', '', debug_backtrace());
        } else common::ErrorOutput('Required file "'.$file.'" doesn\'t 
exists!', '', debug_backtrace());
    }

    function getInstance($class) {
        if (!empty($this->instances[$class])) {
            if (is_object($this->instances[$class])) {
                $this->$pointer =& $this->instances[$class];
                return $this->pointer;
            }
        }
    }
}
</Code>

Die Singleton- und Common-Klasse befinden sich bei mir in der selben 
Datei. Ggf. kann man auch "die()" verwenden...

-- 
Mit freundlichen Grüßen / Kind regards

Steffen Kother


php::bar PHP Wiki   -   Listenarchive