Se você não fez bom uso dos traços, deve começar a usá-los. Realmente não poderia haver melhor exemplo de por que usar características do que apenas para isso:
trait Singleton
{
private static $_instance;
public static function getInstance() {
if (!self::$_instance instanceof self) {
self::$_instance = new self;
}
return self::$_instance;
}
}
class Class_1
{
use Singleton;
}
class Class_2
{
use Singleton;
}
São pelo menos 6 linhas de código que você nunca precisa repetir para fazer uma classe Singleton …