bug #29833 [DebugClassLoader] expose proxyfied findFile() method (fancyweb)
This PR was submitted for the master branch but it was merged into the 3.4 branch instead (closes #29833). Discussion ---------- [DebugClassLoader] expose proxyfied findFile() method | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - As bad as it is, some third party libraries expect that at least one autoload function will be the Composer one and have behaviors that relies on the public `findFile` method. When the `DebugClassLoader` wraps the Composer `ClassLoader`, the function `findFile` is currently lost. So it becomes impossible to use the `DebugClassLoader` with these libraries. This is for example the case in Drupal 😢 (cf83bc30ac40/lib/Drupal/Component/ClassFinder/ClassFinder.php
). Fixing these bad implementations in third party libraries can take forever as things move way slower than in Symfony. This is why I think supporting this case directly in Symfony is better. It's easy and will make the `DebugClassLoader` compatible with more cases. What could be done to go further in this direction would be to proxify any method implementend by wrapped class loaders. Commits -------4f690a31c6
[DebugClassLoader] Readd findFile() method
This commit is contained in:
commit
37c6ae8923
|
@ -124,6 +124,11 @@ class DebugClassLoader
|
|||
}
|
||||
}
|
||||
|
||||
public function findFile($class): ?string
|
||||
{
|
||||
return $this->isFinder ? $this->classLoader[0]->findFile($class) ?: null : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
|
|
Reference in New Issue