Мне просто интересно, каковы преимущества использования public static function
или private static function
вместо простой public function
или private function
?
Обычные методы (обычно называемые методами экземпляра ) вызываются в экземпляре класса, в котором они определены. Метод всегда будет иметь доступ к его объекту через $this
, и поэтому он может работать с данными, переносимыми этим объектом (и даже изменять его). Это основной аспект объектно-ориентированного программирования, и именно это делает класс более чем просто связкой данных.
С другой стороны, вызовы статическим методам не связаны с конкретным объектом. Они ведут себя как обычные функции в этом отношении; действительно, единственное различие заключается в том, что они могут быть выделены private
и также иметь доступ к частным методам и переменным в экземплярах собственного класса. Статические функции – это просто расширение процедурного программирования.
Например, метод объекта вызывается для объекта:
$object = new MyClass(); $result = $object->myInstanceMethod();
Статический метод вызывается для самого класса:
$result = MyClass::myStaticMethod();