PHP Luminova: Deferred Promise Object
Use Luminova’s Deferred, Fulfilled, and Rejected classes to simplify promise handling, manage pre-resolved states, and improve async logic clarity.
The Deferred class provides full control over a Promise object.It separates the creation of a promise from its resolution or rejection — ideal when the result of an operation isn’t immediately available, such as waiting for asynchronous tasks, I/O operations, or timed callbacks.
Class Definition
- Class Namespace:
Luminova\Promise\Deferred
constructor
Create a new Deferred instance with a pending promise state.
public __construct()Usage
use Luminova\Promise\Deferred;
$deferred = new Deferred();
// Access the promise object
$deferred->promise()
->then(function ($result) {
echo "Done: $result";
})
->catch(function ($error) {
echo "Failed: " . $error->getMessage();
});
// Later in your code...
$deferred->resolve('Operation successful');
// or handle failure
// $deferred->reject(new Exception('Something went wrong'));Common Use Case
Deferred promises are commonly used in custom async wrappers:
use Luminova\Components\Async;
use Luminova\Promise\Deferred;
function delayedMessage(): PromiseInterface {
$deferred = new Deferred();
Async::setTimeout(function () use ($deferred) {
$deferred->resolve('Done after delay');
}, 1000);
return $deferred->promise();
}
delayedMessage()->then(fn($msg) => echo $msg);