需要设计建议 - 将静态变为普通方法

My whole project is basically divided into two parts:

  • core
  • helper classes

User creates his custom classes and uses methods from helper classes in there like:

\Project\System\Helpers\Class::foo();

So every public method in each helper class is declared as static. I've came up with an idea to change this, make all user custom classes inherit one special class:

class SingleBeingInheritedClass {
   public function helper($class)
   {
      return new \Project\System\Helpers\$class; // it's just to show the idea
   }
}

so that instead of calling static function, user could write:

$this->helper('class')->foo();

The problem is I use some of these helper classes inside a couple of core classes. And I don't want core classes to inherit anything related to helpers.

In these core classes I also don't want to make the code longer and initialize objects in every method using these helpers.

How should I handle this? Or maybe static methods aren't that bad here?

You wrote:

I also don't want to make the code longer and initialize objects in every method using these helpers.

I you would like to avoid instantiating objects, then you shall stick to static methods. In my projects I use static methods for helpers, for the exact same reason. These helper classes are then used as 'function libraries'. In this case, class is more like a namespace for the helper functions, not something which gets instantiated.