com_event_sink
Connect events from a COM object to a PHP object
&reftitle.description;
boolcom_event_sink
variantvariant
objectsink_object
arraystringnullsink_interface&null;
Instructs COM to sink events generated by
variant into the PHP object
sink_object.
Be careful how you use this feature; if you are doing something similar
to the example below, then it doesn't really make sense to run it in a
web server context.
&reftitle.parameters;
variant
sink_object
sink_object should be an instance of a class with
methods named after those of the desired dispinterface; you may use
com_print_typeinfo to help generate a template class
for this purpose.
sink_interface
PHP will attempt to use the default dispinterface type specified by
the typelibrary associated with variant, but
you may override this choice by setting
sink_interface to the name of the dispinterface
that you want to use.
&reftitle.returnvalues;
&return.success;
&reftitle.changelog;
&Version;
&Description;
8.0.0
sink_interface is nullable now.
&reftitle.examples;
COM event sink example
terminated = true;
}
}
$ie = new COM("InternetExplorer.Application");
$sink = new IEEventSinker();
com_event_sink($ie, $sink, "DWebBrowserEvents2");
$ie->Visible = true;
$ie->Navigate("http://www.example.org");
while(!$sink->terminated) {
com_message_pump(4000);
}
$ie = null;
?>
]]>
&reftitle.notes;
Prior to PHP 8.0.0, calling exit from any of the event
handlers is not supported, and may cause PHP to hang. This can be worked around
by throwing an exception from the event handler, catching the exception in
the main code, and calling exit from there.
&reftitle.seealso;
com_print_typeinfo
com_message_pump