2012-04-16 37 views
3

目前,我们正在写一个模块在Zend框架2.ZF2扶养注射别名和多个实例

我有这个颇有些麻烦找文档,但知道这是可能的。

我有,我会通过依赖注入想建立一个层次3个班。我们称之为这些类; ClassA,ClassB和ClassC。

ClassA的包含ClassB的实例的数组和ClassB包含ClassC实例的数组。 ClassB的每个实例都应该使用不同的参数来实例化。 ClassC也是如此。所有3个类的参数都通过构造函数传入(如果需要,也可以使用setter来处理)。

<?php 
class ClassA { 
    protected $arrClassBInstances = array(); 

    public function __construct($arrClassBInstances) { 
     $this->arrClassBInstances = $arrClassBInstances; 
    } 
} 

class ClassB { 
    protected $arrClassCInstances = array(); 
    protected $someOtherParam = ""; 

    public function __construct($arrClassCInstances, $someOtherParam) { 
     $this->arrClassBInstances = $arrClassCInstances; 
     $this->someOtherParam = $someOtherParam; 

    } 
} 

class ClassC { 
    protected $someParam = ""; 

    public function __construct($someParam) { 
     $this->someParam = $someParam; 
    } 
} 

所以他们是我的问题2部分。首先,我如何配置注入不同参数的同一类的多个实例?例如,ClassB的多个实例都有自己的ClassC实例子集。 ZF2 DiC中必须有某种别名。

其次我怎样才能注入重新配置依赖的阵列成类。例如,如何将ClassB实例的数组注入到ClassA中?

如果可能的话,请给我提供直接使用DIC的例子,在module.config.php的DI部分实现这一目标的一个例子。

回答

0

documentation,我认为这应该工作:

// $event instance of \Zend\Mvc\MvcEvent 
$di = $event->getTarget()->getLocator(); 
$paramsForA = array(
    $di->get('qualified_namespaces_or_di_alias_for_b', array('arrClassCInstances'=>array(
     $di->get('qualified_namespaces_or_di_alias_for_c', array('someParam'=>1)), 
     $di->get('qualified_namespaces_or_di_alias_for_c', array('someParam'=>2)), 
    ))), 
    $di->get('qualified_namespaces_or_di_alias_for_b', array('arrClassCInstances'=>array(
     $di->get('qualified_namespaces_or_di_alias_for_c', array('someParam'=>3)), 
     $di->get('qualified_namespaces_or_di_alias_for_c', array('someParam'=>4)), 
    ))), 
); 
$classA = $di->get('qualified_namespaces_or_di_alias_for_a', array('arrClassBInstances'=>$paramsForA)); 

你要么使用DI aliasfull qualified namespace$di->get()