2008-09-09 4 views
20

私はPHPでTDDスタイルをコーディングしようとしています。私の最大の障害(IDEの欠如を除く)の1つは、自分のモックオブジェクトを正しく挿入するためにIoCコンテナを一緒にハッキングする必要があるということです。PHPのコントロールコンテナの反転?

PHPでIocコンテナを使用した人はいますか?私が見つけたのはPHP IOC on the ever-annoying phpclasses.orgなので、ほとんどドキュメントがなく、次のようなものはほとんどないようです。

+0

PHP 5のための私の依存性注入プロジェクトを見てください:https://github.com/jamolkhon/Sharbat – Jamol

+0

なぜこの質問は、トピック?これは最近の最も重要なトピックの一つです –

+0

私は同意します。質問は存在するかどうか、推薦ではない(そして6年前に質問された)。しかし、「正しい」答えがないので、なぜそれが話題外であると見ることができるのか分かります。 –

答えて

7

私はPHP用のいくつかのDIフレームワークで遊んでいましたが、私は本番環境で使用していません。いくつかのリンクがあります:私は

  • http://php.xjconf.net/
  • FLOW3
  • を試してみました最古のだと思います

    1. http://www.stubbles.net/を - 私はこの1つは とても素敵なフレームワークとなります信じて(今その ベータ版)

    あなたはTDDのためにそれを使用すると述べました - だから多分見てくださいDependency Injection for Unit Tests in PHP

    1

    私は最近6ヶ月間Substrateという名前のPHP IoC/DI Containerを研究しています。それはまだ進行中の仕事ですが、それは1ヶ月半の間にdeployed in productionであり、これまでかなりうまくいっています。

    基盤はSpring Frameworkからインスピレーションを受けていますが、PHPの強みと限界を念頭に置いて書かれています。この時点ではドキュメントはかなりごくわずかですが、ユニットテストの例を含むsample codeがあります。これは、あなたがTDDに使用できるかもしれないと思うものですか?

    6

    Phemtoが再び開発されており、かなり有望なIMHOに見えます。あなたが見たいかもしれないと

    いくつかの他の類似プロジェクト、:

    bucket(免責事項:私はこの1つの主要な作者だ)

    は、長い時間を回避されています。私はそれがもはや積極的に開発されているとは思わないが、一方で、それはかなり安定していると信じている。私はそれを見て以来、それは長い時間でした。

    新しいプロジェクトですが、最近私はつまずいたのですCraftyです。しかし、どれだけ多くの人がそれを使用しているかはわかりません

    私はまた、面白そうに見えるsphicyを見ています。

    +0

    Craftyのダウンロードリンクが壊れています。私は著者に語った、彼は死んだプロジェクトを言った、PHPの新しいバージョンは、PHPのリフレクションAPIの変更のためにそれを壊した。 –

    +0

    OK - それに応じて投稿を更新しました。 – troelskn

    3

    また、Spring(tm)for JavaをモデルにしたDing(http://marcelog.github.com/Ding)を試してみることもできます。 AOPをサポートするコントロールと依存性注入コンテナの完全な逆変換

    2

    PHP-DIは、別の依存性注入容器である。

    それは、注釈による依存性注入最小構成を備え、ここでの例です:

    class Foo { 
        /** 
        * @Inject 
        * @var Bar 
        */ 
        private $bar; 
    } 
    

    それは非常に使いやすいですし、それは例えばZend Frameworkのと統合されています。

    (はい、私はこのフレームワーク上で動作します)

    +0

    +1私はZendの人たちを知っています。彼らはここ数年、PHPでより自然な概念を作り、PHPコミュニティでより理解しやすくなったことを知っています。 –

    0

    Laravel 4は最高のIoCとDIフレームワークを持っています。あなたがフレームワークを使用して気にしないなら、Laravel 4が行く方法です

    +3

    It's zeh Best !! 1 Zeh Best !!!うーん...なぜ? – Gordon