0

私のプロジェクト全体は、基本的に 2 つの部分に分かれています。

  • ヘルパー クラス

ユーザーはカスタム クラスを作成し、ヘルパー クラスのメソッドを次のように使用します。

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

したがって、各ヘルパー クラスのすべてのパブリック メソッドは静的として宣言されます。これを変更して、すべてのユーザー カスタム クラスが 1 つの特別なクラスを継承するようにするというアイデアを思いつきました。

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

静的関数を呼び出す代わりに、ユーザーは次のように記述できます。

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

問題は、これらのヘルパー クラスのいくつかをいくつかのコア クラス内で使用していることです。また、ヘルパーに関連するものをコア クラスに継承させたくありません。

これらのコア クラスでは、コードを長くしたり、これらのヘルパーを使用してすべてのメソッドでオブジェクトを初期化したりしたくありません。

これをどのように処理すればよいですか?それとも、ここでは静的メソッドはそれほど悪くないのでしょうか?

4

1 に答える 1

0

あなたが書いた:

また、コードを長くしたり、これらのヘルパーを使用してすべてのメソッドでオブジェクトを初期化したりしたくありません。

オブジェクトのインスタンス化を避けたい場合は、静的メソッドに固執する必要があります。私のプロジェクトでは、まったく同じ理由で、ヘルパーに静的メソッドを使用しています。これらのヘルパー クラスは、「関数ライブラリ」として使用されます。この場合、クラスはヘルパー関数の名前空間に似ており、インスタンス化されるものではありません。

于 2013-05-16T16:10:09.677 に答える