php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #47206 Unintended API change in XSLTProcessor
Submitted: 2009-01-24 05:02 UTC Modified: 2009-11-20 10:24 UTC
Votes:19
Avg. Score:4.9 ± 0.3
Reproduced:17 of 17 (100.0%)
Same Version:16 (94.1%)
Same OS:13 (76.5%)
From: nforbes@php.net Assigned:
Status: Closed Package: Documentation problem
PHP Version: 5.3CVS-2009-01-24 (snap) OS: Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: nforbes@php.net
New email:
PHP Version: OS:

 

 [2009-01-24 05:02 UTC] nforbes@php.net
Description:
------------
In 5.3, attempting to extend XSLTProcessor in the same way as in 5.2 (with type hinting on the method parameters) yields an E_STRICT message: "Declaration of ExtendedXSLTProcessor::importStylesheet() should be compatible with that of XSLTProcessor::importStylesheet()".

Removing the type hint fixes the problem in 5.3. I am assuming this behavior is unintentional, and that the type hint should still be associated with the methods.

This applies to both ::importStylesheet() and ::transformToDoc(), and potentially other methods as well.

Reproduce code:
---------------
<?php
class ExtendedXSLTProcessor extends XSLTProcessor {
  public function importStylesheet(DOMDocument $stylesheet) {
    parent::importStylesheet($stylesheet);

    /* ... */
  }
}
?>

Actual result:
--------------
Strict Standards: Declaration of ExtendedXSLTProcessor::importStylesheet() should be compatible with that of XSLTProcessor::importStylesheet() in /.../test.php on line 8

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-01-30 15:01 UTC] david dot zuelke at bitextender dot com
Same problem here. Subclasses of XSLTProcessor can work without E_STRICT 
warning either in 5.2 or in 5.3, but not in both :(
 [2009-01-30 17:01 UTC] johannes@php.net
Rob,

any problem with a atch like 
------------------------
Index: ext/xsl/xsltprocessor.c
===================================================================
RCS file: /repository/php-src/ext/xsl/xsltprocessor.c,v
retrieving revision 1.39.2.2.2.9.2.15
diff -u -p -r1.39.2.2.2.9.2.15 xsltprocessor.c
--- ext/xsl/xsltprocessor.c	31 Dec 2008 11:15:47 -0000	1.39.2.2.2.9.2.15
+++ ext/xsl/xsltprocessor.c	30 Jan 2009 16:59:15 -0000
@@ -29,7 +29,7 @@
 
 /* {{{ arginfo */
 ZEND_BEGIN_ARG_INFO_EX(arginfo_xsl_xsltprocessor_import_stylesheet, 0, 0, 1)
-	ZEND_ARG_INFO(0, doc)
+	ZEND_ARG_OBJ_INFO(0, doc, "DOMDocument", 0)
 ZEND_END_ARG_INFO();
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_xsl_xsltprocessor_transform_to_doc, 0, 0, 1)
------------------------

I didn't properly test it but it should work ...
 [2009-01-30 17:04 UTC] david dot zuelke at bitextender dot com
(mind you, Rob, that this applies to transformToDoc(), too)
 [2009-02-03 12:06 UTC] chregu@php.net
dmitry changed that 8 weeks ago with the message:

***
MFH: fix arginfo - these also accept SimpleXMLElement
***

http://cvs.php.net/viewvc.cgi/php-src/ext/xsl/xsltprocessor.c?
r1=1.39.2.2.2.9.2.13&r2=1.39.2.2.2.9.2.14

So, the removing of the typehint has a reason and I don't see a way to 
make it BC *and* accept SimpleXMLElement

 [2009-02-03 14:53 UTC] rrichards@php.net
The type hint added in 5.2.6 broke BC and wasn't detected until post 
5.2.8 where it was fixed. It shouldn't have been added in the first 
place
 [2009-02-05 20:08 UTC] johannes@php.net
According to the discussion on internals (Thread "towards the next 5.3 release", http://article.gmane.org/gmane.comp.php.devel/55896), it should be documented that

- importStylesheet might take DOMDocument or SimpleXMLElement as parameter
- this was broken in 5.2.6 - 5.2.8 (inclusive) where importStylesheets only accepted DOMDocument
- when users extend XSLTProcessor they shouldn't set a typehint.
 [2009-11-20 10:24 UTC] vrana@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation better.


 [2009-11-20 10:27 UTC] svn@php.net
Automatic comment from SVN on behalf of vrana
Revision: http://svn.php.net/viewvc/?view=revision&revision=291055
Log: Accepts SimpleXMLElement (bug #47206)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Mar 29 14:01:28 2024 UTC