©
本文档使用
php中文网手册 发布
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
com_event_sink — Connect events from a COM object to a PHP object
$comobject
, object $sinkobject
[, mixed $sinkinterface
] )
Instructs COM to sink events generated by
comobject into the PHP object
sinkobject.
Be careful how you use this feature; if you are doing something similar to the example below, then it doesn't really make sense to run it in a web server context.
comobject
sinkobject sinkobject should be an instance of a class with
methods named after those of the desired dispinterface; you may use
com_print_typeinfo() to help generate a template class
for this purpose.
sinkinterface
PHP will attempt to use the default dispinterface type specified by
the typelibrary associated with comobject, but
you may override this choice by setting
sinkinterface to the name of the dispinterface
that you want to use.
成功时返回 TRUE , 或者在失败时返回 FALSE 。
Example #1 COM event sink example
<?php
class IEEventSinker {
var $terminated = false ;
function ProgressChange ( $progress , $progressmax ) {
echo "Download progress: $progress / $progressmax \n" ;
}
function DocumentComplete (& $dom , $url ) {
echo "Document $url complete\n" ;
}
function OnQuit () {
echo "Quit!\n" ;
$this -> terminated = true ;
}
}
$ie = new COM ( "InternetExplorer.Application" );
// note that you don't need the & for PHP 5!
$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 ;
?>
[#1] fjortiz [2005-07-14 00:33:29]
In case someone needs a skeleton sink for ADODB.Connection events:
class ADOConnectionEventSink {
function BeginTransComplete( $translevel, $objerror, $status, $objconn ) {
return 0;
}
function CommitTransComplete( $objerror, $status, $objconn ) {
return 0;
}
function RolbackTransComplete( $objerror, $status, $objconn ) {
return 0;
}
function WillConnect ( $ConnectionString, $userid, $psword, $options, $status, $objconn ) {
return 0;
}
function ConnectComplete ( $objerror, $status, $objconn) {
return 0;
}
function Disconnect( $status, $objConn ) {
return 0;
}
function WillExecute ( $src, $cursortyp, $locktyp, $options, $status, $objcomm, $objrs, $objconn ) {
return 0;
}
function ExecuteComplete ( $recaffected, $objerror, $status, $objcomm, $objrs, $objconn ) {
return 0;
}
function InfoMessage ( $objerror, $status, $objconn) {
return 0;
}
}
// later on...
$db = new COM("ADODB.Connection", NULL, $charPage);
$sink = new ADOConnectionEventSink();
com_event_sink($db, $sink, "ConnectionEvents");
//...