Какая разница между public function и public static function?
Если делать статику:class any_class
{
  public static function add()
  {
  }
}
... то, чтобы воспользоваться методом, не надо создавать объект, классу которого принадлежит этот метод, он доступен, если есть описание класса.any_class::add()
А так лишний раз создавать объект по любому поводу, чтобы воспользоваться методом add().class any_class
{
  public function add()
  {
  }
}$any_class_object = new any_class;
$any_class_object->add();
Если методы общеупотребительные, и используются на каждый чих, конечно, их выгодно делать статичными.
Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса. Свойство класса, объявленное как статическое, не может быть доступно посредством экземпляра класса (но статический метод может быть вызван).
Так как статические методы вызываются без создания экземпляра класса, то псевдопеременная $this недоступна внутри метода, объявленного как статический.