Сами по себе синглтоны не плохи как паттерн, но в твоём случае они бесполезны, просто излишняя конструкция.
Вот к примеру, есть метод
Cache::init, и есть
конструкторМожно смело переносить код из конструктора в init, получим
public static function init()
{
if (!empty(static::$processed)) {
return;
}
static::$now = time();
static::$key = (Config::get('system.cache.prefix') ? Config::get('system.cache.prefix') : 'fansoro') . '-' . md5(ROOT_DIR . Fansoro::VERSION);
static::$driver = static::getCacheDriver();
static::$driver->setNamespace(static::$key);
self::$processed = true;
}
Ах да, комментарии в теле данного метода, я бы полностью вырезал, ты занимаешься тавтологией, комментирую настолько банальный код.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации