This fixes the crash; the sample script:
$c = new COM('ADODB.Connection');
echo $c;
still does not work because the engine tries to call $c->__toString() and the
ADODB object *might* implement that method, but doesn't know until you open the
connection.
the search interface sucks).
Expand the proxy object so it can handle psuedo array style properties.
ASP/VB code like this:
headObj.Attribute("RID") = rid
can be expressed like this in PHP:
$headObj->Attribute['RID'] = $rid;
In theory, this feature can be used for "multi dimensional" properties:
headObj.Attribute("RID", "Foo") = rid;
like this:
$headObj->Attribute['RID']['Foo'] = $rid;
Adding a package.xml to a bundled extension does not only
ease the transition to PECL whereever suitable but also
allows to build and install an extension as "shared" using
the PEAR installer without having to deal with phpize and
friends by hand
Note: You should not be using ZVAL_DELREF() in day to day usage. Instead,
you should use zval_ptr_dtor(). Use ZVAL_DELREF() only if you're
messing with the refcount directly and know what you're doing.
Note #2: For clarity, if you want to initialize a new zval with a refcount
of 0, it's best to do that directly, instead of using ZVAL_DELREF
after allocating the zval...
extension.
This enables:
- iteration of SafeArray types via foreach()
- proxying of multi-dimensional SafeArray types so that multi-dimension
array accesses work (untested!)
- Fix COM exceptions, and expose them as their own class of exception
"com_exception"
- auto typelib file import (com.typelib_file ini option)
- event sinking
- wrapper to map PHP objects to COM
- fix mapping of variant values to PHP values
# Could someone please add com_saproxy.c and com_wrapper.c to the .dsp
# file?
Problem was that our extension assumes that the first param to ITypeInfo::Invoke was a reference to the COM object; this is not necessarily true and caused a crash in this instance.
Problem solved by removing the ITypeInfo::Invoke call, as it doesn't buy us anything anyway.