Когда использовать static метода?
использование слова static оправдано для методов и классов, где логически отсутствует необходимость в множественных объектах. Классический пример - математические функции. Объекты класса "калькулятор" не нужны никому. Поэтому в ООП языках, как правило, класс Math и ему подобные - статичны.
Представим сайт с заказом пиццы. Объект-корзина, в нее добавлено несколько разных объектов-пицц с разной ценой и объект-кола. Нужно посчитать сумму заказа, мы вызываем метод корзина->получитьСумму(). Этот метод пробегается по всем товарам корзины и считает сумму.
Теперь представим что метод получитьСумму() мы ради эксперимента делаем статическим. Где ему брать данные для расчета?
Теперь представим объект "Конфиг" и его метод "конфиг::получитьЗначение('ключ')"
Такой конфиг можно сделать синглетоном или вообще сделать статическим.