code: public function apply(array $params,$value_given = array()){
          $result = array();
          foreach ($params as $param){
              if(key_exists($param->name,$value_given)){
                  $result[] = $value_given[$param->name];
              }else{
                  $class = $param->getClass();
                  $name_to_produce = is_null($class) ? $param->name : $class->name;
                  try{
                      $temp = $this->produce($name_to_produce,array(),false);
                  }catch (InjectorException $e){
                      if($param->isDefaultValueAvailable()){
                          $temp = $param->getDefaultValue();
                      }else{
                          throw $e;
                      }
                  }
                  $result[] = $temp;
              }
          }
          return $result;
      }
docs: fill the params(keys) by the values given and objects in Injector container
  @param array $params
  @param array $value_given
  @return array
  @throws InjectorException