PHPKonf Istanbul PHP Conference 2019 - Call for Papers

com_event_sink

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

com_event_sinkBir COM nesnesinden, PHP nesnesine olayları bağlar

Açıklama

bool com_event_sink ( variant $comNesne , object $aliciNesne [, mixed $aliciArayuz ] )

comNesne ile üretilen olayların, PHP nesnesi aliciNesne içine bağlanmasını sağlar.

Bu özelliği kullanırken dikkatli olun; eğer aşağıdaki örnek benzeri bir şey yapıyorsanız bunun bir html sunucusunda çalışmasının anlamı yoktur.

Değiştirgeler

comNesne

aliciNesne

aliciNesne istenen arayüzün yöntem isimlerinin olduğu sınıftan türemiş nesne olmalıdır; bu amaçla şablon bir sınıf üretmek için com_print_typeinfo() işlevinden yardım alabilirsiniz.

aliciArayuz

PHP, comNesne tür kitaplığındaki öntanımlı arayüz türünü kullanmaya çalışacaktır, bu durumu kullanmak istediğiniz arayüzü aliciArayuz değiştirgesine yazarak engelleyebilirsiniz.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Örnekler

Örnek 1 COM olay bağlayıcı örneği

<?php
class IEEventSinker {
    var 
$terminated false;

   function 
ProgressChange($progress$progressmax) {
      echo 
"İndirme işlemi: $progress / $progressmax\n";
    }

    function 
DocumentComplete(&$dom$url) {
      echo 
"$url tamamlandı\n";
    }

    function 
OnQuit() {
      echo 
"Çık!\n";
      
$this->terminated true;
    }
}
$ie = new COM("InternetExplorer.Application");
// PHP 5 ile & kullanılmasına gerek kalmadığına dikkat edin!
$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;
?>

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
1
veggie
1 year ago
I got voice recognition working. I'm not sure why the way I called the sink function made it work but I'm more about results right now. This small example had me rolling on the floor laughing.

<?php
/*
* Search this for more info on the voice stuff:
* Automation Interfaces and Objects (SAPI 5.4)
*/

//directions:
//php friend.php
//then fire up windows voice recognition and turn it on and say stuff

$voice = new COM("SAPI.SpVoice");

print
"Hit control+c to end.\n";
print
"Friend: Hello friend!\n";

$voice->Speak("Hello friend!");

class
listen
{
   
    function
Recognition($StreamNumber, $StreamPosition, $RecognitionType, $ISpeechRecoResult)
    {
       
       
$phrase = $ISpeechRecoResult->PhraseInfo;
       
$text = $phrase->GetText();
       
        print
"\nYou:$text\n";
    
       
        global
$voice;
       
$say = array('oh', 'nice', 'humm', 'interesting', 'you dont say', 'uh huh', 'right', 'what', 'ha ha', 'you have got to be joking', 'right back at you buddy');
       
$idx = rand(0, count($say)-1);
       
        print
"Friend: " . $say[$idx] . "\n";
       
$voice->Speak($say[$idx]);
       
    }
   
}

$recog = new COM("SAPI.SpSharedRecognizer");

$context = $recog->CreateRecoContext();

//SRERecognition = 16 (default)
//SREAllEvents = 393215
//$context->EventInterests = 393215;

//try to listen to events on context
$listen = new listen(); //event handler
if (!com_event_sink($context, $listen, "RecognizerStateChange"))
{
    print
"Unable to sink events\n";
    exit;
}

$grammar = $context->CreateGrammar();

$i = $grammar->DictationLoad();

$s = $grammar->DictationSetState(1); //1=on, 0=off

while(true)
{
   
    if(!
com_message_pump(1000))
    {
        print
".";
    }
   
}

?>
up
0
fjortiz
13 years ago
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");
//...
To Top