Где грань между созданием экземпляра объекта (new Class()) и использованием оператора разрешения области видимости (::)?
Статические методы стоит использовать в качестве именованных конструкторов. Для всего остального лучше создавать экземпляры объектов, потому что статические методы к ООП, по большому счёту, никакого отношения не имеют и поэтому размывают парадигму для тех, кто в ней не очень хорошо ориентируется.
Если в статическом методе нет работы с состоянием и таких методов много, скорее всего, автор кода не очень проникся идеями ООП и код написан в процедурном стиле. А если там есть модификация какого-то состояния, то это работа с глобальными переменными (почему глобальные переменные - это плохо, надеюсь, пояснять не нужно).Обязательно ли создавать экземпляр? Или можно обойтись статическими методами
У вас в коде есть вот это: echo Form::getError();. Откуда статический метод будет получать информацию об ошибке формы? Как он будет отличать ошибки одной формы от другой?Единственное что знаю, экземпляр надо создавать тогда, когда он оперирует уникальными даннымиЭкземпляр нужен тогда, когда у него есть какое-то собственное состояние (ошибки валидации, например). У двух объектов состояние может совпадать (то есть быть неуникальным), но это не значит, что в следующий момент один из них не изменится.
Никакой значительной разницы по функционалу кроме того что нельзя использовать $this статический вызов не несёт.
Как удобнее в общем-то...
И да(@alexey-m-ukolov) это не по ООПешному.