2017-05-08 4 views
0

私はZend Expressiveと呼ばれる新しいフレームワークで作業を始めました.Zend Expressiveは2番目のPSR-7コンポーネントベースのフレームワークで、コードを作成してかなり速く動かすことができます。あなたのプロジェクトが大きくなると工場の定型会話をどう扱うのですか?

私の問題点は、プロジェクトが大きくなるにつれて工場出荷時の定型文も増加することです。したがって、ActionクラスごとにActionFactoryクラスとペアを組んで適切な依存関係を注入し、エイリアスを作成して発送してルートに渡します。

もっと多くのアクションが工場の定型文であり、私はそのボイラープレートをどのように削減するのか把握しようとしていますか?

+0

zend-servicemanagerを使用する場合は、AbstractFactoryInterfaceを使用できます。https://xtreamwayz.com/blog/2015-12-30-psr7-abstract-action-factory-one-for-all – xtreamwayz

+0

工場の定型文はあまりありません冗長、PhpStormなどのIDEには、作成を高速化するための多くの便利なオプションが追加されています。言い換えれば、それはバグではなく、それは機能です:-D – dualmon

+0

@extreamwayzええ、zendのサービスマネージャーを使用しない場合は、普遍的な解決策が必要です。 – exts

答えて

1

私がコメントで述べたように、私は工場を作る普遍的な解決策はないと思います。私はあなたがzend-servicemanagerを使用しないことを知っていますが、工場クラスを生成するcliコマンドが付属しています:https://docs.zendframework.com/zend-servicemanager/console-tools/#generate-factory-for-class

あなた自身でファクトリジェネレータを作成する方法についてのアイディアを与えるかもしれません。

は、ここでそれについての記事です:http://www.masterzendframework.com/simple-factory-generation-with-factorycreator/

0

依存リゾルバとロジックを実装しようとすることができます。 クラスリフレクションによる依存関係を解決することで、多くのファクトリを保存できます。

$instance = null; 
    $reflection = new \ReflectionClass($className); 

    $constructor = $reflection->getConstructor(); 
    if ($constructor === null) { 
     // no constructor specified, you can simply return the new instance. 
     $instance = $reflection->newInstanceWithoutConstructor(); 
    } else { 
     // if there is constructor, you can loop through the constructor parameters and build the instance. 
    } 

ここでは循環依存性を避けるために注意が必要です。

関連する問題