(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.
| 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à.