Tôi đã đọc về mô hình Promise và tôi đã cố gắng viết mã một phiên bản bằng PHP với sự trợ giúp của một vài ví dụ và sự hiểu biết của riêng tôi về cách nó hoạt động. Có phải tôi đã đưa ra một ví dụ hợp lý về mẫu Promise hay tôi đã thực hiện điều này không chính xác?Việc triển khai này có phải là một ví dụ hợp lý về Lời hứa trong PHP không?
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();
}
}
}
Ví dụ sử dụng:
$promiser->promise(function() {
echo "sleeping\n";
sleep(3);
return 3;
})
->then(function($args) {
echo " in second function, $args\n";
});
$promiser->resolve();
Điều này phù hợp hơn với codereview.stackexchange.com –
@JohnConde là đúng. Tuy nhiên, để giảm bớt sự tò mò của bạn - đây thực sự là một mẫu Promise trong PHP! ... Ngoại trừ việc 'sleep()' đang chặn. Trả lời đến. –