(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
com_event_sink — Conecta eventos de un objeto COM a un objeto PHP
$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.
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.
| Versión | Descripción |
|---|---|
| 8.0.0 |
sink_interface ahora es nullable.
|
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;
?>