Реализовать свойства singleton: статические классы или переменные статического метода?

Итак, я всегда реализовал синглтон:

class Singleton { private static $_instance = null; public static function getInstance() { if (self::$_instance === null) self::$_instance = new Singleton(); return self::$_instance; } private function __construct() { } } 

Однако недавно мне показалось, что я мог бы также реализовать его с помощью статических переменных:

 class Singleton { public static function getInstance() { //oops - can't assign expression here! static $instance = null; // = new Singleton(); if ($instance === null) $instance = new Singleton(); return $instance; } private function __construct() { } } 

Для меня это чище, потому что это не загромождает класс , и мне не нужно делать никаких явных проверок существования , но поскольку я никогда не видел эту реализацию нигде, мне интересно:

Что-то не так с использованием второй реализации по сравнению с первой?