ID:               37274
 User updated by:  tp at synolon dot gr
 Reported By:      tp at synolon dot gr
 Status:           Open
 Bug Type:         COM related
 Operating System: Windows XP Pro
 PHP Version:      5.1.3
 New Comment:

I'm happy to see that at least there are others interested in COM
communication through PHP. I think that more work has to be done for
this module cause brings a bridge for the open source community to the
windoze world (it is usefull for some bussiness apps...). For example I
could manage to run the code I presented through java using IBM COM
bridge and worked OK. But is a pity to run a jsp site just because the
COM PHP implemntation is buggy. Also I find it TOO much (in this
case...) to call java code through PHP to get this job done... not to
mention that my service provider won't support the php to java bridge.
We love PHP so please give a look at that bug!


Previous Comments:
------------------------------------------------------------------------

[2006-08-17 18:30:02] phpbugs at mike-c dot com

I recently started playing around with COM objects in PHP, and this bug
has been causing me a huge headache.  I've read several reports,
including one which was marked fixed, so I did some research...

The following syntax works on PHP 5.0.4:
$Obj->Attribute['Name'] = $Val;

However on PHP 5.0.5, it throws an exception:
Fatal error: Uncaught exception 'com_exception' with message 'Error
[0x8002000e] Invalid number of parameters.

This therefore appears to be a regression dating back to apr/may 05.

------------------------------------------------------------------------

[2006-05-26 06:40:05] tp at synolon dot gr

For the '$': Sorry, I misstyped it, but only here. In my original code
this is OK. Unfortunately this is not the problem.
I wonder if the problem is that the array style property returns an
object and not a simple data type. When bug 28161 was fixed I saw that
it was related with array style properties that could be assigned a
value directly (eg a string, a number etc). But what about object COM
properties?

------------------------------------------------------------------------

[2006-05-25 14:46:46] dtyschenko at soft-ukraine dot com

$this->kbmDetail->Field[ fieldname ]->Value = $fieldvalue;

Is it okay, that you type filedname without '$' ???

------------------------------------------------------------------------

[2006-05-02 09:59:52] tp at synolon dot gr

Description:
------------
This seems to be related with bug #28161 that, as I read, was fixed
since version 5.0. I want to access an array style COM property that is
actually an object and then get or set a property of that object. I get
a COM exception when I do that followed by apache crash.
I have tried all binary PHP distributions for Windows that I found from
5.1.2 to 5.1.3 (cvs also) and did not work.
My PHP setup is the typical one described in 'install.txt' of the PHP
package. The only change that I have made in php.ini (except of the
doc_root) is 'com.allow_dcom = true'.
I use Apache 1.3.27.
Please help!

Reproduce code:
---------------
public function setField( $fieldname , $fieldvalue , $masterobj = true
)
{
        // kbm & kbmDetail are class member variables
        // that were previously instanciated like this:
        // $this->kbm = new COM( "SasClient.kbm" );
        // The kbm object has an array style property
        // 'Field' that returns an object. We want to  
        // set the 'Value' property.
        // In VB this code looks like this:
        // kbm.Field( fieldname ).Value = fieldvalue

        try
        {
                if( $masterobj )
                        $this->kbm->Field[ $fieldname ]->Value = $fieldvalue;
                else
                        $this->kbmDetail->Field[ fieldname ]->Value = 
$fieldvalue;
        }
        catch( com_exception $e )
        {
                print( $e->__toString( ) );
        }
}

Expected result:
----------------
The property should be set

Actual result:
--------------
exception 'com_exception' with message 'Error [0x8002000e] Invalid
number of parameters. ' in c:\data\www\senapi\CSen.php:259 Stack trace:
#0 c:\data\www\senapi\CSen.php(259): CSen::setField() #1
c:\data\www\senapi\sentest.php(206): CSen->setField('docid', -1001) #2
{main}docid = -1001


------------------------------------------------------------------------


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

Reply via email to