Bug #11658 Updated: Getting values by reference don't work

From: Date: Wed, 27 Jun 2001 08:16:23 +0000
Subject: Bug #11658 Updated: Getting values by reference don't work
Groups: php.dev 
Request: Send a blank email to php-dev+get-58170@lists.php.net to get a copy of this message
ID: 11658 User Update by: andrej.aschenbrenner@face.de Status: Closed Bug Type: COM related Operating system: Windows NT 4.0 SP 6 PHP Version: 4.0.6 Description: Getting values by reference don't work It didn't work! I get this: Warning: Invoke() failed: Typ paßt nicht. in D:\www\webze\application\index.php on line 10 translated: ...: Type mismatch. Line 10 looks like this: $instance->CheckLogin($user, COM_REMOTE_SERVER, $allowed); I have tried all of the combinations I could think of, VT_UI1|BYREF, VT_UI2|BYREF, VT_UI4|BYREF, VT_I1|BYREF, VT_I2|BYREF, VT_I4|BYREF, VT_INT|BYREF, VT_UINT|BYREF It doesn't matter. I get always the same type mismatch warning. Note that the variable $allowed in the function of the COM-Object is defined as "long". Please help me to get this working. Previous Comments: --------------------------------------------------------------------------- [2001-06-26 10:19:19] phanto@php.net closed --------------------------------------------------------------------------- [2001-06-26 10:19:03] phanto@php.net $user = "test_user"; $allowed = new VARIANT(8, VT_I4|VT_BYREF); $instance = new COM("dll.CObject") or die("Unable to instanciate dll.CObject"); $instance->CheckLogin($user, COM_REMOTE_SERVER, $allowed); echo $allowed->value; /* you can use $allowed->type to check it against * VT_* constants * look into the php documentation for more flags * passing variables by reference is a deprecated * zend feature (i don't know why) and it didn't work * in every case in earlier versions. */ --------------------------------------------------------------------------- [2001-06-26 07:00:49] sniper@php.net The #11660 was already bogused. Reopened this one. --------------------------------------------------------------------------- [2001-06-25 17:21:56] jeroen@php.net Was submitted twice. Dup. of 11660 --------------------------------------------------------------------------- [2001-06-25 09:00:11] andrej.aschenbrenner@face.de Example: $user = "test_user"; $allowed = 8; $instance = new COM("dll.CObject") or die("Unable to instanciate dll.CObject"); $instance->CheckLogin($user, COM_REMOTE_SERVER, &$allowed); echo $allowed; $allowed has always the value that you have specified above, here: 8; When I change $allowed to 6788, then I get 6788. It seems that the variable won't be changed when you pass it by reference. It doesn't matter if i use the & sign or not! Note that the variable $allowed have to be integer, I can't pass a variant type to the COM-Function CheckLogin. The same has been working with previous versions of PHP, until 4.0.5 and above. In need this functionality because i use a lot of stuff like that: $instance->some_function(&$var1, &$var2, &$var3); any clue, what's going up? --------------------------------------------------------------------------- The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online. Full Bug description available at: http://bugs.php.net/?id=11658

« previous php.dev (#58170) next »