Ich habe über das Promise-Muster gelesen, und ich habe versucht, eine Version in PHP mit Hilfe von ein paar Beispielen und meinem eigenen Verständnis, wie es funktionieren sollte, zu kodieren. Ist das ein vernünftiges Beispiel für das Promise-Muster, oder habe ich das falsch umgesetzt?Ist diese Implementierung ein gutes Beispiel für ein Versprechen in PHP?
class PromiseClass {
private $callbacks = array();
private $last_return;
function promise($promise) {
if (get_class($promise) == 'Promise') {
return $promise;
} else if (is_callable($promise)) {
$this->then($promise);
return $this;
}
}
public function then (callable $callback) {
$this->callbacks[] = $callback;
return $this;
}
public function resolve() {
$callback = array_shift($this->callbacks);
if (is_callable($callback)) {
$this->last_return = $callback($this->last_return);
}
if (count($this->callbacks) > 0) {
$this->resolve();
}
}
}
Beispiel für die Verwendung:
$promiser->promise(function() {
echo "sleeping\n";
sleep(3);
return 3;
})
->then(function($args) {
echo " in second function, $args\n";
});
$promiser->resolve();
Dies ist besser geeignet für codereview.stackexchange.com –
@ JohnConde hat Recht. Wie auch immer, um Ihre Neugier zu stillen - das ist in der Tat ein Promise-Muster in PHP! ... Außer dass 'sleep()' blockiert. Ankommende antworten. –