PHPのコントロールコンテナを反転しますか?[閉まっている]
-
09-06-2019 - |
質問
私は PHP で TDD スタイルをコーディングしようとしていますが、最大の障害の 1 つは (適切な IDE がないこと以外に)、すべてのモック オブジェクトを適切に注入するためだけに独自のハックされた IoC コンテナーを作成しなければならないことです。
PHP で Ioc コンテナを使用した人はいますか?私が見つけられたのは 常に迷惑な phpclasses.org の PHP IOC ドキュメントもほとんどなく、支持者も少ないようです。
解決
PHP 用の DI フレームワークをいくつか試しましたが、実稼働環境では使用したことがありません。いくつかのリンクがあります:
- http://www.stubbles.net/ 私が試した最古のことだと思います
- http://php.xjconf.net/
- フロー3 - 私はこれが非常に素晴らしいフレームワークになると信じています(今のベータ版)
あなたはそれを TDD に使用すると述べました - それで、おそらく見てください PHP での単体テストの依存関係の挿入
他のヒント
フェムト は再び開発されており、私見では非常に有望に見えます。
他にも同様のプロジェクトがいくつかありますので、参照してください。
バケツ (免責事項:私はこの本の主著者です)
の ピココンテナのphp-port, 、長い間存在しています。もう積極的に開発されているわけではないと思いますが、一方でかなり安定していると思います。久しぶりに見ましたけどね。
私が最近偶然見つけたかなり新しいプロジェクトは、 ずるい. 。ただ、どれくらいの人が利用しているかは分かりません。
私も見てます スパイシーな, 、面白そうです。
Spring(tm) for Java をモデルとした Ding (http://marcelog.github.com/Ding) を試してみることもできます。これは、制御と依存性注入コンテナーの完全な反転であり、AOP もサポートします。
についてはどうですか Symfony 依存関係の注入 または PHP 5.3 以降の同等のもの 成分 symfony 2.0 プロジェクトから。
PHP-DI は別の依存性注入コンテナーです。
依存性注入を特徴としています。 注釈 そして 最小限の構成, 、例を次に示します。
class Foo {
/**
* @Inject
* @var Bar
*/
private $bar;
}
非常に使いやすく、たとえば Zend Framework と統合されます。
(はい、私はこのフレームワークに取り組んでいます)
私は次のことに取り組んできました PHP IoC/DIコンテナ 過去 6 か月間、Substrate と名付けられました。それはまだ進行中の作業ですが、 運用環境にデプロイされる 1か月半ですが、これまでのところかなりうまく機能しています。
Substrate は Spring Framework からインスピレーションを得ていますが、PHP の長所と制限を念頭に置いて作成されています。現時点ではドキュメントは最小限ですが、いくつかのドキュメントがあります。 サンプルコード, 単体テストの例も含まれています。これは TDD に使用できる可能性があると考えていますか?
Laravel 4 には最高の IoC および DI フレームワークが備わっています。フレームワークを使用しても構わない場合は、Laravel 4 が最適です。