Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Inconsistencies in factory parameter resolution #431

@predakanga

Description

@predakanga

Thanks for merging the PR on #362, but unfortunately I've just discovered a couple of bugs that it creates/reveals.

There are two big issues:

  1. If a type-hinted factory parameter is resolvable from the container, any supplied parameter will be ignored

    This is an easy fix - just need to bump AssociativeArrayResolver to the top of the ResolverChain in FactoryResolver.php

  2. FactoryParameterResolver overwrites already resolved parameters

    Again, a simple fix - just needs this preamble added (taken from other resolvers in php-di/invoker):

      $parameters = $reflection->getParameters();
    
      // Skip parameters already resolved
      if (! empty($resolvedParameters)) {
          $parameters = array_diff_key($parameters, $resolvedParameters);
      }
    

I'm happy to prepare a PR to fix these (or just provide tests for reproduction), but wanted your input: FactoryParameterResolver could be replaced with a combination of TypeHintResolver and TypeHintContainerResolver. Would you prefer a fix to FactoryParameterResolver, or removing it in favour of the two TypeHint resolvers?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions