Req #80357 [Fbk->Opn]: Unable to re-enable entity loader without triggering a deprecation
| From: | cmb@php.net | Date: | Fri, 13 Nov 2020 10:30:12 +0000 |
| Subject: | Req #80357 [Fbk->Opn]: Unable to re-enable entity loader without triggering a deprecation | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-230315@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=80357&edit=1
ID: 80357
Updated by: cmb@php.net
Reported by: jeremy at derusse dot com
Summary: Unable to re-enable entity loader without triggering
a deprecation
-Status: Feedback
+Status: Open
Type: Feature/Change Request
Package: *XML functions
Operating System: All
PHP Version: 8.0.0RC4
Block user comment: N
Private report: N
New Comment:
In hindsight, it might have been best to remove this functionality
altogether, i.e. make libxml_disable_entity_loader() a NOP, but
it's probably too late to do that now. Not issuing E_DEPRECATED
if the function is called with FALSE, appears to be not
unreasonable.
Previous Comments:
------------------------------------------------------------------------
[2020-11-13 07:55:27] jeremy at derusse dot com
Thank you for the suggestion, but silencing the deprecation with an
@ doesn't
work: frameworks like Symfony, use error_handler to collect and logs deprecations. At the end the
deprecation is not that silent.
And I would like avoiding juggling with temporary error handlers to "just" silent a
deprecation.
What's about libxml_entity_loader_disabled(A_FALSE_CONSTANT) that re-enable the
entity loader but without triggering the deprecation?
------------------------------------------------------------------------
[2020-11-12 20:41:40] requinix@php.net
As far as I can tell, the whole point of the change was to deprecate the entire function and force
callers who want entity loading to do so at the time of loading (using LIBXML_NOENT). Eventually it
will be removed entirely, which would make a "libxml_entity_loader_disabled" function
pointless.
IMO this is one of those times when you should use @ to suppress the warning. I mean, if there is
code that disables the loader then it will be triggering the deprecation warning too, right?
------------------------------------------------------------------------
[2020-11-12 20:02:02] jeremy at derusse dot com
Description:
------------
calling libxml_disable_entity_loader has been deprecated in PHP >= 8.0
(https://github.com/php/php-src/pull/5867)
But if a 3rd party library disable the entity loader, we have no way to re-enable it (or even to
know if we have to re-enable it) without triggering a deprecation.
Suggested change:
- do not trigger deprecation when calling the method with false
- add a new method libxml_entity_loader_disabled() that returns true/false when the
entity loader is disabled
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80357&edit=1