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

# com_event_sink

(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

### Description

function 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 l'objet PHP `sink_object`.

Il convient d'être prudent lors de l'utilisation de cette fonctionnalité ; si l'on fait quelque chose de similaire à l'exemple ci-dessous, cela n'a pas de sens de lancer sur un serveur Web.

### Liste de paramètres

`variant`

`sink_object`

  `sink_object` doit être une instance de la classe avec des noms de méthodes suivant le dispinterface désiré ; il est recommandé d'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 il est possible de changer cela en spécifiant dans le paramètre `sink_interface` le dispinterface que l'on souhaite 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` est désormais nullable.

### 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, appeler exit() depuis n'importe quel gestionnaire d'événement n'est pas supporté et peut faire planter PHP. Ceci peut être contourné en lançant une exception depuis un gestionnaire d'événement, en attrapant l'exception dans le code principal, et en appelant exit() depuis celui-ci.

### Voir aussi

- com_print_typeinfo() - Affiche une définition de classe PHP pour une interface répartissable
- com_message_pump() - Traite un message COM dans un délai donné

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open