Development

Changeset 22115

You must first sign up to be able to contribute.

Changeset 22115

Show
Ignore:
Timestamp:
09/18/09 08:45:48 (4 years ago)
Author:
fabien
Message:

[dependency_injection] added the ability to pass several resources in the ::load() method of loader classes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • components/dependency_injection/trunk/lib/sfServiceContainerLoader.php

    r20409 r22115  
    6363   * constructor. 
    6464   * 
     65   * You can also pass multiple resource paths to the constructor. 
     66   * 
    6567   * @param mixed $resource The resource path 
    6668   */ 
     
    7274    } 
    7375 
    74     list($definitions, $parameters) = $this->doLoad($resource); 
     76    $resources = func_get_args(); 
     77    foreach ($resources as $resource) 
     78    { 
     79      list($definitions, $parameters) = $this->doLoad($resource); 
    7580 
    76     foreach ($definitions as $id => $definition) 
    77     { 
    78       if (is_string($definition)) 
     81      foreach ($definitions as $id => $definition) 
    7982      { 
    80         $this->container->setAlias($id, $definition); 
     83        if (is_string($definition)) 
     84        { 
     85          $this->container->setAlias($id, $definition); 
     86        } 
     87        else 
     88        { 
     89          $this->container->setServiceDefinition($id, $definition); 
     90        } 
    8191      } 
    82       else 
     92 
     93      $currentParameters = $this->container->getParameters(); 
     94      foreach ($parameters as $key => $value) 
    8395      { 
    84         $this->container->setServiceDefinition($id, $definition); 
     96        $this->container->setParameter($key, $this->container->resolveValue($value)); 
    8597      } 
     98      $this->container->addParameters($currentParameters); 
    8699    } 
    87  
    88     $currentParameters = $this->container->getParameters(); 
    89     foreach ($parameters as $key => $value) 
    90     { 
    91       $this->container->setParameter($key, $this->container->resolveValue($value)); 
    92     } 
    93     $this->container->addParameters($currentParameters); 
    94100  } 
    95101 
  • components/dependency_injection/trunk/test/unit/sfServiceContainerLoaderTest.php

    r20409 r22115  
    1313sfServiceContainerAutoloader::register(); 
    1414 
    15 $t = new lime_test(10); 
     15$t = new lime_test(11); 
    1616 
    1717class ProjectLoader extends sfServiceContainerLoader 
     
    7676$loader->load(array(array('foo' => new sfServiceDefinition('BazClass')), array())); 
    7777$t->is($container->getServiceDefinition('foo')->getClass(), 'BazClass', '->load() overrides already defined services'); 
     78 
     79$loader->setServiceContainer($container = new sfServiceContainerBuilder()); 
     80$loader->load(array(array(), array('foo' => 'bar')), array(array(), array('bar' => 'foo'))); 
     81$t->is($container->getParameters(), array('foo' => 'bar', 'bar' => 'foo'), '->load() accepts several resources as argument');