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.
|
* Loads the given class or interface.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user