#27974 [Csd]: COM object and arrays
| From: | e dot vandeoudeweetering at marcanti dot esprit-sg dot | Date: | Fri, 23 Apr 2004 19:24:12 +0000 |
| Subject: | #27974 [Csd]: COM object and arrays | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-58677@lists.php.net to get a copy of this message | ||
ID: 27974
User updated by: e dot vandeoudeweetering at marcanti dot esprit-sg dot
Reported By: e dot vandeoudeweetering at marcanti dot esprit-sg dot
Status: Closed
Bug Type: COM related
Operating System: windows2000 (5.00.2185) sp4
PHP Version: 5.0.0RC2-dev 23-04-2004 06:30
Assigned To: wez
New Comment:
Thanks for your support wez!
Previous Comments:
------------------------------------------------------------------------
[2004-04-23 15:21:31] wez@php.net
What you describe now is expected behaviour; take a look
at http://www.zend.com/php5/articles/php5-dotnet.php
for
more information on COM in PHP 5.
The only problem now is that count() doesn't return sensible values for
overloaded objects; this is a general
issue and not COM specific (so it's a different bug).
I'll see what can be done about that.
------------------------------------------------------------------------
[2004-04-23 13:33:53] e dot vandeoudeweetering at marcanti dot
esprit-sg dot
I installed the CVS version [5.0.0RC2-dev, 23 Apr 2004 06:30] and did
the following tests:
### PHP Code ###
<?php
define("APPEND", 3);
$adsi = "cn=user,ou=test,dc=php,dc=net";
$user = new COM("LDAP://" . $adsi);
$arr = array("123", "456", "789");
$user -> PutEx(APPEND, "otherHomePhone", $arr);
$user -> SetInfo();
$arr2 = $user -> GetEx("otherHomePhone");
?>
### Test 1 ###
$cnt = count($arr2);
for($i = 0; $i < $cnt; $i++) {
print $arr[$i] . "\n";
}
//Only the 1st of 3 elements is printed
//count function results 1. wrong! 3 elements in array
### Test 2 ###
foreach($arr2 as $val) {
print $val . "\n";
}
//All 3 elements are printed!
### Test 3 ###
print_r($arr2);
//Results: variant Object
The COM function PutEx on line 9 works fine!!! Active directory is
updated with the correct values in array.
The COM function GetEx on line 12 has a small problem.
There's no array returned in the function, but an variant object.
------------------------------------------------------------------------
[2004-04-22 16:28:40] wez@php.net
My fix was too paranoid; I've updated it; please try the next snapshot.
------------------------------------------------------------------------
[2004-04-22 13:54:32] e dot vandeoudeweetering at marcanti dot
esprit-sg dot
Hi Wez,
I installed the CVS version [5.0.0RC2-dev, 22 Apr 2004 08:32:53] and
did the following tests:
### PHP Code ###
<?php
define("APPEND", 3);
$adsi = "cn=user,ou=test,dc=php,dc=net";
$user = new COM("LDAP://" . $adsi);
$arr = //See the test results!
$user -> PutEx(APPEND, "otherHomePhone", $arr);
$user -> SetInfo();
?>
### Test 1 ###
$arr = array("123", "456", "789");
PHP Warning: Unknown: COM: converting from PHP array to VARIANT array;
only arrays with numeric keys are allowed in C:\php\includes\test.php
on line 9
Exception thrown
File : C:\php\includes\test.php
Line : 9
Message : Source: Active Directory
Description: Unspecified error
Code : -2147352567
TraceString :
#0 {main}
### Test 2 ###
$arr = array(0 => "123", 1 => "456", 2 => "789");
PHP Warning: Unknown: COM: converting from PHP array to VARIANT array;
only arrays with numeric keys are allowed in C:\php\includes\test.php
on line 9
Exception thrown
File : C:\php\includes\test.php
Line : 9
Message : Source: Active Directory
Description: Unspecified error
Code : -2147352567
TraceString :
#0 {main}
As you see, both tests failed.
I hope these tests will help you.
Best regards,
Edwin.
------------------------------------------------------------------------
[2004-04-22 02:52:13] wez@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
I've just comitted a probable fix; please try the next PHP snapshot
(could be up to 3 hours away) and let me know how things go.
------------------------------------------------------------------------
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/27974
--
Edit this bug report at http://bugs.php.net/?id=27974&edit=1