getInstance - это экземпляр объекта (он тоже нужен), и он как раз таки должен быть статическим:
$a = MyClass::getInstance();
$b = MyClass::getInstance();
'a' и 'b' - будут иметь один и тот же объект.
---
Чтобы сохранялось свойство надо примерно такой код:
class C
{
private $p;
public function getProperty() {
if (is_null($this->p)) {
$this->p = ...
}
return $this->p;
}
}
---
Реализация синглтона в простеньком виде:
class C
{
private static $instance;
private function __constructor() {
// init
}
public static function getInstace() {
if (is_null($this->instance)) {
$this->instance = new self();
}
return $this->instance;
}
}