Bug #51174 [Com]: error "expected to be a reference" when $this referenced in an array property

2010-09-14 Thread jeremy at tuxmachine dot com
Edit report at http://bugs.php.net/bug.php?id=51174&edit=1

 ID: 51174
 Comment by: jeremy at tuxmachine dot com
 Reported by:skrol29forum at gmail dot com
 Summary:error "expected to be a reference" when $this
 referenced in an array property
 Status: Open
 Type:   Bug
 Package:Scripting Engine problem
 Operating System:   Win7
 PHP Version:5.3
 Block user comment: N

 New Comment:

See also bug 50394.


Previous Comments:

[2010-07-23 01:43:42] heis dot turtlemad at gmail dot com

Same failure running Php5.3.2 on FreeBSD8



david:~>php test.php

arg_array[0]  is the 

same instance than $this  

prop=1 

arg_array[0]  is the 

same instance than $this  



Warning: Parameter 1 to f_test() expected to be a reference, value given
in /usr/home/david/test.php on line 15


[2010-06-21 00:03:55] fel...@php.net

I can reproduce it.



array(1) {

  [0]=>

  &object(clsTest)#1 (2) {

["prop"]=>

int(0)

["arg_array"]=>

*RECURSION*

  }

}

prop=1 

array(1) {

  [0]=>

  object(clsTest)#1 (2) {

["prop"]=>

int(1)

["arg_array"]=>

*RECURSION*

  }

}

PHP Warning:  Parameter 1 to f_test() expected to be a reference, value
given


[2010-03-01 08:24:57] skrol29forum at gmail dot com

I've inverted "Expected result" and "Actual result".


[2010-03-01 00:08:16] skrol29forum at gmail dot com

Description:

When $this is stored by reference in a PHP array, itself stored in a
property, then function call_user_func_array() is able to recognize the
reference only if called in the same local context where $this is
referenced. In other words, the reference seems to be lost for
call_user_func_array().



The bug does not occur with PHP 5.2,

It does occur with both PHP 5.3.0 and PHP 5.3.1. Not yet tested with PHP
5.3.2



Note that if we use a global variable instead of a property, then the
bug does not occur.





Reproduce code:
---
prop++;

echo "prop=".$obj->prop." \r\n";

}



class clsTest {

public $prop = 0;

public $arg_array = false;

function meth() {

if ($this->arg_array===false) $this->arg_array = array(&$this);

echo 'arg_array[0] '.(($this->arg_array[0]===$this) ? ' is the 
same
instance' : ' is not the same instance').' than $this'."  \r\n";

call_user_func_array('f_test', $this->arg_array);

}

}



$oTest = new clsTest;

$oTest->meth(); // OK

$oTest->meth(); // ERR



?>

Expected result:

arg_array[0] is the same instance than $this

prop=1

arg_array[0] is the same instance than $this



Warning: Parameter 1 to f_test() expected to be a reference, value given
in D:\www\bug.php on line 14

Actual result:
--
arg_array[0] is the same instance than $this

prop=1

arg_array[0] is the same instance than $this

prop=2






-- 
Edit this bug report at http://bugs.php.net/bug.php?id=51174&edit=1


Bug #50394 [Com]: Reference argument converted to value in __call

2010-09-14 Thread jeremy at tuxmachine dot com
Edit report at http://bugs.php.net/bug.php?id=50394&edit=1

 ID: 50394
 Comment by: jeremy at tuxmachine dot com
 Reported by:tstarling at wikimedia dot org
 Summary:Reference argument converted to value in __call
 Status: Closed
 Type:   Bug
 Package:Scripting Engine problem
 Operating System:   Linux
 PHP Version:5.3.1
 Assigned To:pajoye
 Block user comment: N

 New Comment:

See bug 51174.


Previous Comments:

[2010-09-04 01:16:50] david at tuxteam dot com

This seems to be an issue for Drupal modules as well.  This is a
significant problem for running Drupal on PHP 5.3.


[2010-08-10 09:14:45] parktrip at gmail dot com

I have the same problem with mediawiki 1.15.5 and PHP 5.3.2 (lastest
version from Zend Server)

So is this a MW problem or PHP ?


[2010-07-23 01:09:33] heis dot turtlemad at gmail dot com

> Mediawiki is wrong in their comments. 



Not quite true.



> There is a regression which was fixed in 5.3.2, 

> so upgrade to 5.3.2 is the right way to do it.



Upgrading to 5.3.2 doesn't solve the issue, running the following
softwares:

FreeBSD 8/Nginx/MediaWiki 1.15.4

Any call to a Mediawiki extension fails on the following error:

 



Downgrading to 5.2 is actually the only way to get rid of this.


[2010-06-06 19:04:27] paj...@php.net

Mediawiki is wrong in their comments. There is a regression which was
fixed in 5.3.2, so upgrade to 5.3.2 is the right way to do it.



No need of further comments tho', the issue is fixed.



Thanks for your feedbacks.


[2010-06-06 18:55:37] PandoraBox2007 at gmail dot com

install-utils.inc



set comments



/*

$test = new PhpRefCallBugTester;

$test->execute();

if ( !$test->ok ) {

echo "PHP 5.3.1 is not compatible with MediaWiki due to a bug
involving\n" .

"reference parameters to __call. Upgrade to PHP 5.3.2 
or higher, or
\n" .

"downgrade to PHP 5.3.0 to fix this.\n" .

"ABORTING (see http://bugs.php.net/bug.php?id=50394 for 
details)\n";

die( -1 );

}

*/




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

http://bugs.php.net/bug.php?id=50394


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=50394&edit=1