ESB с веб-сервисами в его истинной форме обеспечивает слабую связь Приложения путем отправки данных через один элементы сообщения.
МАМА обеспечивает не только Слабую связь Приложения, но и слабую связь процесса вперед.
ESB идет с дополнительными функциями, поддерживающими Управление центральный подход.
Оба могут использоваться независимо или вместе в зависимости от сценария.
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";
}
?>
[Изменить] Добавлены отсутствующие скобки. Также добавлено объявление обратного вызова, я так предпочитаю.
С PHP 5.3 теперь вы можете сделать это:
function doIt($callback) { $callback(); }
doIt(function() {
// this will be done
});
Наконец, хороший способ сделать это. Отличное дополнение к PHP, потому что обратные вызовы потрясающие.