Hi internals
I'm looking to address https://bugs.php.net/bug.php?id=71571.
TL;DR: XSL has a maximum recursion depth, and it may even depend on the distro/OS config.
For complex inputs you may reach this limit, but PHP offers no way to change that limit.
As we already have methods in XSLTProcessor to configure certain things (e.g. setProfiling, setSecurityPrefs), it may be an idea to add setMaxDepth(int $depth)
or something alike.
Unfortunately, XSLTProcessor is non-final, so if a user class extends this class and coincidentally already has a method with the same name but incompatible signature, then they would get a compile error.
What do you think?
Kind regards
Niels
Hi internals
I'm looking to address https://bugs.php.net/bug.php?id=71571.
TL;DR: XSL has a maximum recursion depth, and it may even depend on the
distro/OS config.
For complex inputs you may reach this limit, but PHP offers no way to
change that limit.As we already have methods in XSLTProcessor to configure certain things
(e.g. setProfiling, setSecurityPrefs), it may be an idea to add
setMaxDepth(int $depth)
or something alike.Unfortunately, XSLTProcessor is non-final, so if a user class extends
this class and coincidentally already has a method with the same name
but incompatible signature, then they would get a compile error.What do you think?
Kind regards
Niels
In context, I cannot imagine why someone would have a setMaxDepth() method with that name, since, AIUI, they wouldn't be able to actually set the max depth. So I think the chances of there being a conflict are extremely remote, and an acceptable risk.
This could be verified by doing a "top packages" scan using Nikita's script, which is probably a good step anyway.
--Larry Garfield