com_event_sink

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

com_event_sinkConnecte des événements d'un objet COM sur un objet PHP

Description

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

Connecte des événements de l'objet COM variant sur un l'objet PHP sink_object.

Soyez prudent sur l'utilisation de cette fonctionnalité ; si vous faites quelque chose de similaire à l'exemple ci-dessous, cela n'a pas de sens de le lancer sur un serveur Web.

Liste de paramètres

variant

sink_object

sink_object devra être une instance de la classe avec des noms de méthodes suivant le dispinterface désiré ; vous devriez utiliser com_print_typeinfo() pour l'aide à la génération d'un gabarit de classe pour cela.

sink_interface

PHP devrait être capable d'utiliser le type par défaut de dispinterface spécifié par la Typelib associée avec l'objet variant, mais vous pouvez changer cela en spécifiant dans le paramètre sink_interface le dispinterface que vous souhaitez utiliser.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.0.0 sink_interface is nullable now.

Exemples

Exemple #1 Exemple de connexions d'événements COM

<?php
class IEEventSinker {
    var 
$terminated false;

   function 
ProgressChange($progress$progressmax) {
      echo 
"Progression du téléchargement : $progress / $progressmax\n";
    }

    function 
DocumentComplete(&$dom$url) {
      echo 
"Document $url terminé\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;
?>

Notes

Attention

Antérieur à PHP 8.0.0, Prior to PHP 8.0.0, appeller exit() depuis n'importe quel gestionnaire d'événement n'est pas supporté, et peut causer PHP à planter. Ceci peut être contourné en lançant une exception depuis un gestionnaire d'événement, attrapant l'exception dans le code principal, et appeller exit() là.

Voir aussi