com_event_sink

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

com_event_sinkConnect events from a COM object to a PHP object

Descrição

com_event_sink(variant$variant, object$sink_object, array|string|null$sink_interface = null): bool

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.

Parâmetros

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.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

VersãoDescrição
8.0.0sink_interface is nullable now.

Exemplos

Exemplo #1 COM event sink example

<?php
class IEEventSinker {
var
$terminated = false;

function
ProgressChange($progress, $progressmax) {
echo
"Download progress: $progress / $progressmax\n";
}

function
DocumentComplete(&$dom, $url) {
echo
"Document $url complete\n";
}

function
OnQuit() {
echo
"Quit!\n";
$this->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;
?>

Notas

Cuidado

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.

Veja Também

To Top