$instance
- локальная переменная, а не свойство статического класса. В отличии от Java, вы всегда должны получить доступ к переменным или свойствам в theire объеме
$var; // local variable
$this->var; // object property
self::$var; // class property
Я просто видел
// singleton instance
Одноэлементная модель обычно реализуется различной
class SingletonClass {
protected $instance = null;
protected $var = 3;
protected __construct() {}
protected __clone() {}
public static function getInstance() {
if (is_null(self::$instance)) { self::$instance = new self(); }
return self::$instance;
}
public function doSomething() {
$this->var++;
echo $this->var;
}
}
$a = SingletonClass::getInstance();
$a->doSomething();
Одноэлементная модель гарантирует, что вы всегда взаимодействуете с одним экземпляром класса.