Ho letto del pattern Promise e ho provato a codificare una versione in PHP con l'aiuto di alcuni esempi e la mia comprensione di come dovrebbe funzionare. È quello che ho trovato con un ragionevole esempio del modello Promise, o l'ho implementato in modo errato?Questa implementazione è un buon esempio di Promessa 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();
}
}
}
uso Esempio:
$promiser->promise(function() {
echo "sleeping\n";
sleep(3);
return 3;
})
->then(function($args) {
echo " in second function, $args\n";
});
$promiser->resolve();
Questo è più adatto per codereview.stackexchange.com –
@JohnConde ha ragione. Tuttavia, per alleviare la tua curiosità - questo è davvero un modello di Promessa in PHP! ... Tranne che 'sleep()' sta bloccando. Rispondi in arrivo. –