2017-04-01 3 views
2

例として、ValidatorクラスのvalidateDateTimeメソッドを呼び出します。この関数は、日付時刻が必須の形式であるかどうかをチェックするだけです。Symfony:サービスコンテナVS静的メソッド

namespace MyApp\Util; 

use \DateTime; 

class Validator { 
    public static function validateDateTime($dateTime, $format = 'Y-m-d') { 
     $d = DateTime::createFromFormat($format, $dateTime); 
     return $d && $d->format($format) == $dateTime; 
    } 
} 

私はSymfonyを学ぶ前に、関数全体をアプリケーション全体で共有する必要がある場合、常に関数の使用を容易にするために静的メソッドを使用します。

私はSymfonyを学んだ後、アプリケーション全体に使用される機能にアクセスするのと同じ利便性を実行するサービスコンテナである非常に強力な機能をSymfonyが持っていることを知っています。

私の質問は以下のとおりです。私はしたい場合

  1. symfonyのベストプラクティスでは、サービスコンテナ
  2. 対静的メソッドを使用しての長所と短所は何ですか、それは静的なメソッドを介してサービスコンテナを使用することをお勧めします同じ目的を達成する(アプリケーション全体で共有する機能)。どのような状況では
  3. 、なぜ、我々は静的メソッドを使用する必要が

コメントや意見が非常に高く評価されています。

+1

FRom testing point静的メソッドはモックするのが難しい – Matteo

答えて

6

将来的には、作成している機能の別の実装が必要な場合は、静的メソッドを使用しないでください。静的メソッドは、静的であることを意味し、変更または拡張されることはありません。

サービス "IoC"コンテナは、コンポーネントをデカップリングして依存性を逆転させることでコードを変更または拡張しやすくするために使用され、依存コンポーネントを変更することなく新しい実装を追加したり、 。

関連する問題