Hi! On 20.03.2012 23:33, Gustavo Lopes wrote: > On Tue, 20 Mar 2012 23:27:50 +0100, Nicolai Scheer > <sc...@planetavent.de> wrote: > >> >> <?php >> $doc = new DOMDocument(); >> $doc->loadHTML( '<html><body>Test</body></html>' ); >> $body = $doc->getElementsByTagName( 'body' )->item( 0 ); >> echo $doc->saveHTML( $body ); >> >> If I compile 5.3.10 myself (RHEL 5.7), I get the very same behaviour as >> described in the last comment of bug 39771: >> >> "PHP Warning: DOMDocument::saveHTML() expects exactly 0 parameters, 1 >> given" >> >> A quick look at the sources of 5.3.10 show, that there is indeed a >> optional node parameter: >> >> ext/dom/document.c:2296: >> >> if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), >> "O|O!", &id, dom_document_class_entry, &nodep, dom_node_class_entry) == >> FAILURE) { >> return; >> } >> >> Yet, the arginfo does not reflect this, e.g. >> >> ext/dom/document.c:158: >> >> ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_document_savehtml, 0, 0, 0) >> ZEND_END_ARG_INFO(); >> >> should read >> >> ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_document_savehtml, 0, 0, 0) >> ZEND_ARG_OBJ_INFO(0, node, DOMNode, 1) >> ZEND_END_ARG_INFO(); >> >> If I allow for passing that optional parameter by adjusting the arginfo, >> the php snippet posted above works just fine. >> >> The documentation of DOMDocument::saveHTML is in sync with the >> implementation of dom_document_save_html, it seems that just the >> parameter checking is wrong. >> > > While the arginfo is in fact wrong and should be fixed, it cannot have > the impact you're describing. The wrong arginfo for internal functions > only affects reflection (except if it has typehints for classes). > > Most likely, you're loading an old version of the DOM extension > (compiled with an earlier version of PHP 5.3).
I see. I indeed did use the dom.so shipped with RHEL 5.7 (which delivers php 5.3.3 if I remember correctly), but compiled php 5.3.10 on top of it, still using the old packetized dom extension. So I didn't fix it by adding the arginfo, but by using the self-compiled dom extension from 5.3.10... Thanks for pointing that out! Greetings, Nico -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php