PHP 4 サーバーで行き詰まっています。古いレガシー プロジェクトを、依存性注入を含む最新のデザイン パターンに移行したいと考えています。PHP 4 で動作する依存性注入フレームワークはありますか?
3 に答える
ほとんどの依存性注入フレームワークは、リフレクションを使用して依存性を決定します。PHP4 にはタイプヒントがないため、実際にはこれを行うことはできません。構成ファイルを使用して実験が行われました - コード内のコメントに埋め込まれている場合があります (多くの場合、注釈と呼ばれます)。これは機能しますが、少し扱いにくいと思います。私の意見では、静的に型付けされたソリューションを PHP に適用しようとするよりも、PHP の動的な性質を有利に利用する方がよいでしょう。手作りの工場で長い道のりを歩むことができます。たとえば、方法に関するこの投稿を参照してください。
これ(ドリップ)を見つけたのですが、ここ数年更新されていないようです。
PHP では、オブジェクト指向プログラムが構造化されているため、依存性注入フレームワークが実際に PHP で機能するとは思えません。まず第一に、C# や Java とは異なり、バイナリが既に存在し、このオブジェクトをインスタンス化して別のオブジェクトに挿入する方法を見つけるだけで済みます。PHP は、クラス ファイルを使用する前に、クラス ファイルを読み込んで解釈する必要があります。したがって、PHP に深い継承階層がある場合、それは良い考えではないと思います。
PHP がスクリプト言語であることを考えると、それをスクリプト言語として活用するのが最善です。つまり、単純なファクトリ メソッドまたはビルダー メソッドを使用して、依存性注入に似た処理を行うだけです。PHP ランタイムがすべての Web リクエストに対して処理しなければならないものに追加するだけの DI フレームワークで負担をかけることはありません (オペコード キャッシングを行う場合を除きますが、Java および .ネット)。オブジェクトに挿入されるオブジェクトやその作成方法を変更する必要がある場合は、ファクトリ/ビルダー メソッドを含むスクリプトを編集するだけの簡単な作業です。とにかくそこで再コンパイルする必要はありません。そのため、私には柔軟性があり、PHP のやり方に適した軽量のアーキテクチャーを持っています。