public function testInstantiateExplicitlyDisabledSingletonLeafes() { $config = array('YadifFoo' => array('class' => 'YadifFoo', 'scope' => Yadif_Container::SCOPE_SINGLETON, 'arguments' => array('YadifBaz', 'YadifBaz'), 'methods' => array()), 'YadifBaz' => array('class' => 'YadifBaz', 'scope' => Yadif_Container::SCOPE_PROTOTYPE, 'arguments' => array(), 'methods' => array())); $yadif = new Yadif_Container($config); $component = $yadif->getComponent("YadifFoo"); $this->assertFalse($component->a === $component->b, 'Not Enforcing singleton of object did not work!'); }
public function testBindMethodParamInConfigurationThroughParametersKey() { $config = array('YadifBaz' => array('class' => 'YadifBaz', 'methods' => array(array('method' => 'setA', 'arguments' => array(':foo'), 'params' => array(':foo' => 'bar'))))); $yadif = new Yadif_Container($config); $component = $yadif->getComponent("YadifBaz"); $this->assertEquals("bar", $component->a); }
public function testMergeContainerUsesConfigOfOtherIfOwnHasNone() { $config = new Zend_Config(array("bar" => "baz")); $c1 = new Yadif_Container(array()); $c2 = new Yadif_Container(array(), $config); $c1->merge($c2); $this->assertEquals($config, $c1->getConfig()); }
/** * Merge two Containers * * @todo Handle duplicates, currently array_merge overwrites them * @param Yadif_Container $container * @return Yadif_Container */ public function merge(Yadif_Container $container) { $this->_container = array_merge($this->_container, $container->getContainer()); $this->_instances = array_merge($this->_instances, $container->getInstances()); $otherConfig = $container->getConfig(); $ownConfig = $this->getConfig(); if ($otherConfig instanceof Zend_Config) { if ($ownConfig == null) { $this->setConfig($otherConfig); } else { if ($ownConfig->readOnly() == true) { $this->setConfig(new Zend_Config(array_merge($ownConfig->toArray(), $otherConfig->toArray()))); } else { $this->setConfig($ownConfig->merge($otherConfig)); } } } return $this; }
public function testDecorateInstance() { $config = array('YadifBaz' => array('class' => 'YadifBaz', 'decorateWith' => array('YadifBar', 'YadifFoo')), 'YadifBar' => array('arguments' => array('DecoratedInstance')), 'YadifFoo' => array('arguments' => array('DecoratedInstance'))); $yadif = new Yadif_Container($config); $baz = $yadif->getComponent('YadifBaz'); $this->assertType('YadifFoo', $baz); $this->assertType('YadifBar', $baz->a); $this->assertType('YadifBaz', $baz->a->a); }