Раньше никогда их не использовал, но меня очень заинтересовала
эта возможность языка. Ранее я пользовался статическими методами как небольшими вспомогательными функциями, которым для работы не нужен контекст объекта, его состояние и т.п. (или создавал вспомогательные классы, состоящие только из статических методов). Но зачем ввели статические свойства, да еще и с возможностью делать их приватными? По сути получается объект без объекта. который может задавать состояние и считавать его так же, как и обычный объект, создаваемый с помощью
new, с той только разницей, что он не имеет конструктора и еще некоторых возможностей:
<?php
class StaticClass
{
private static $property;
public static function setProp($value)
{
self::$property = $value;
}
public static function getProp()
{
$prop = self::$property;
return self::doSomething($prop);
}
private static function doSomething($arg)
{
// что-то делаем
return $arg;
}
}
StaticClass::doSomething(1); // нельзя
StaticClass::$property = 1; // нельзя
StaticClass::setProp(2);
StaticClass::getProp(); // 2
Мне хотелось бы понять, как нужно использовать эту возможность и как статические переменные влияют на производительность и потребление памяти?