Скажем, у меня есть случай, когда мне нужен вспомогательный класс, который должен иметь статические методы, но эти методы нуждаются в статическом объекте для манипулирования.
Я бы предпочел, чтобы помощник был автономным, поэтому мне нужно только включить файл. В качестве альтернативы можно добавить вызов инициализации к какому-либо автозагрузчику, но я бы предпочел этого избежать.
Учитывая, что вы не можете использовать __construct
метод здесь, потому что класс никогда не создается, это приемлемая альтернатива?
class HelperClass
{
private static $property;
private static function init()
{
if (!isset(self::$property))
self::$property = new stdClass;
}
static function addSomething($key, $value)
{
self::$property->$key = $value;
}
static function getObject()
{
if (isset(self::$property))
return self::$property;
else
return new stdClass;
}
}
Задача ещё не решена.
Других решений пока нет …