(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
com_event_sink — Connecte des événements d'un objet COM sur un objet PHP
$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.
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.
      
   Cette fonction retourne true en cas de succès ou false si une erreur survient.
  
| Version | Description | 
|---|---|
| 8.0.0 | 
       sink_interface is nullable now.
       | 
     
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;
?>
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à.