On 10.08.2016 at 19:34, Fleshgrinder wrote:

> On 8/10/2016 4:17 PM, Christoph M. Becker wrote:
>> On 10.08.2016 at 12:59, Nikita Popov wrote:
>>
>>> The simplest way to fix ext/xml in particular is probably to migrate it to
>>> use an object instead of a resource.
>>
>> I guess that is the best action in the long run (i.e. 7.2+), but that
>> would of course cause a BC break, so probably it's best to document that
>> the user has to break the cycle manually, if xml_set_object() is used
>> (7.0, 7.1).
>>
>> Wrt. to PHP 5.6 it appears there are no issues at all.  While the code
>> out-commented by Thies is still there (which should be removed to avoid
>> further confusion), in the following a (shallow) copy of the object is
>> made, and apparently due to the additional refcount in the object store
>> of PHP 5, everything is okay.
>>
>> Another alternative for PHP 7.2 might be to drop (after deprecation)
>> xml_set_object(); actually, it seems to me this function is a relict of
>> pre PHP 5.  Cf. example #1[1].  Instead of doing:
>>
>>   xml_set_object($this->parser, $this);
>>   xml_set_element_handler($this->parser, "tag_open", "tag_close");
>>
>> one could simply do:
>>
>>   xml_set_element_handler($this->parser,
>>       [$this, "tag_open"], [$this, "tag_close]);
>>
>> [1]
>> <http://php.net/manual/en/function.xml-set-object.php#refsect1-function.xml-set-object-examples>
> 
> It does not have to be a BC if we simply introduce a new API for this
> extension and keep the old one as is. The whole set of functions just
> cries out loud for a class that encapsulates the state of the parser and
> both the utf8_* functions simply do not belong in this extension.

That might be a good idea, even if we already have the XMLReader.  And
yes, the utf8_* functions don't really belong into ext/xml; frankly, I
think they don't belong anywhere – we already have iconv, mbstring and
recode which offer a subset of utf8_decode()/utf8_encode.  OTOH,
utf8_decode()/_encode() appear to be often used (IIRC there are a lot of
user notes suggesting to use these functions).

-- 
Christoph M. Becker

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to