com_event_sink

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

com_event_sinkConecta eventos de un objeto COM a un objeto PHP

Descripción

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

Conecta eventos del objeto COM variant a un objeto PHP sink_object.

Sea prudente al utilizar esta funcionalidad; si se hace algo similar al ejemplo a continuación, no tiene sentido ejecutarlo en un servidor web.

Parámetros

variant

sink_object

sink_object debe ser una instancia de la clase con nombres de métodos que sigan el dispinterface deseado; se debe utilizar com_print_typeinfo() para ayudar a generar una plantilla de clase para esto.

sink_interface

PHP debe ser capaz de utilizar el tipo por defecto de dispinterface especificado por la Typelib asociada con el objeto variant, pero se puede cambiar esto especificando en el parámetro sink_interface el dispinterface que se desea utilizar.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Historial de cambios

Versión Descripción
8.0.0 sink_interface ahora es nullable.

Ejemplos

Ejemplo #1 Ejemplo de conexiones de eventos COM

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

function
ProgressChange($progress, $progressmax) {
echo
"Progreso de la descarga: $progress / $progressmax\n";
}

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

function
OnQuit() {
echo
"¡Salir!\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

Precaución

Antes de PHP 8.0.0, llamar a exit() desde cualquier gestor de eventos no es soportado, y puede causar que PHP se bloquee. Esto puede evitarse lanzando una excepción desde un gestor de eventos, capturando la excepción en el código principal, y llamando a exit() allí.

Ver también