It's ok,

I discovered that object (if not passed by reference explicitly) is first 
duplicated (internally) and only then the method is called.


Proof code:

<?php
class myCls
{
        var $myVar;
        function myCls() { $this->myVar = 1; }
        function myInc() { $this->myVar++; }
        function myEcho() { echo "$this->myVar "; }
}

$myObj = new myCls();
$myObj->myEcho();
$myObj->myInc();
$myObj->myEcho();
call_user_func(array($myObj, 'myInc'));
$myObj->myEcho();
unset($myObj);

echo "\n";

$myObj = new myCls();
$myObj->myEcho();
$myObj->myInc();
$myObj->myEcho();
call_user_func(array(&$myObj, 'myInc'));
$myObj->myEcho();
?>

produces output:
1 2 2 
1 2 3 


On Wednesday 15 December 2004 08:28, Bostjan Skufca @ domenca.com wrote:
> Hi all,
>
> is there any internal difference between following calls (they occur inside
> some class)?
>
> #1 register_shutdown_function(array($this, 'myfunc'));
> #2 register_shutdown_function(array(&$this, 'myfunc'));
> (note the reference operator in #2)
>
> Or is parameter "$this" in example #1 forced to be taken as reference
> internally, which makes both calls basically identical?
>
>
> Thank you for your kind response.
>
>
> Best regards,
> Bostjan Skufca

-- 
Best regards,

Bostjan Skufca
system administrator

Domenca d.o.o. 
Phone: +386 4 5835444
Fax: +386 4 5831999
http://www.domenca.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to