Как я реализую обратный вызов в PHP?

ESB с веб-сервисами в его истинной форме обеспечивает слабую связь Приложения путем отправки данных через один элементы сообщения.

МАМА обеспечивает не только Слабую связь Приложения, но и слабую связь процесса вперед.

ESB идет с дополнительными функциями, поддерживающими Управление центральный подход.

Оба могут использоваться независимо или вместе в зависимости от сценария.

178
задан Nick Stinemates 8 September 2008 в 00:53
поделиться

2 ответа

create_function не работал у меня внутри класса. Мне пришлось использовать call_user_func .

<?php

class Dispatcher {
    //Added explicit callback declaration.
    var $callback;

    public function Dispatcher( $callback ){
         $this->callback = $callback;
    }

    public function asynchronous_method(){
       //do asynch stuff, like fwrite...then, fire callback.
       if ( isset( $this->callback ) ) {
            if (function_exists( $this->callback )) call_user_func( $this->callback, "File done!" );
        }
    }

}

Затем использовать:

<?php 
include_once('Dispatcher.php');
$d = new Dispatcher( 'do_callback' );
$d->asynchronous_method();

function do_callback( $data ){
   print 'Data is: ' .  $data .  "\n";
}
?>

[Изменить] Добавлены отсутствующие скобки. Также добавлено объявление обратного вызова, я так предпочитаю.

5
ответ дан 23 November 2019 в 20:16
поделиться

С PHP 5.3 теперь вы можете сделать это:

function doIt($callback) { $callback(); }

doIt(function() {
    // this will be done
});

Наконец, хороший способ сделать это. Отличное дополнение к PHP, потому что обратные вызовы потрясающие.

65
ответ дан 23 November 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: