Since 5.3.1 it's impossible to have a reference parameter passed to a
__call() function. This is apparently due to the bugfix committed by
stas as shown here:

<http://svn.php.net/viewvc/php/php-src/branches/PHP_5_2/Zend/zend_execute_API.c?r1=287466&r2=287465&pathrev=287466>

Test cases can be found here: <http://bugs.php.net/bug.php?id=50394>. It
seems to me that a special case would be needed to restore the behaviour
seen in PHP 5.3.0.

This change causes bugs in MediaWiki, where an attempt by a proxy object
to pass a call through to a function that accepts reference parameters
will always fail, due to the exacerbating change made to reference
argument semantics in PHP 5.3.0.

If we want MediaWiki to support PHP 5.3.1, we'll have to do some major
changes, like abandoning __call entirely, or rewriting all the relevant
interfaces to not use reference parameters. I'm not too keen about doing
this without getting some indication from the PHP dev team as to whether
this change is permanent or whether it will be fixed in an imminent PHP
5.3.2 release. If it's going to be fixed soon, we can just blacklist PHP
5.3.1 in our installer.

I've tried emailing stas but I didn't get a reply.

-- Tim Starling

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

Reply via email to