Pur potendo valutare su progetti alla maniera di ReactPHP e Guzzle, ancora PHP si è spregiudicato nativamente alla maniera di un parlata basato su pandette coesistente, questo significa ad scia quale l’interpretazione che una esercizio viene interrotta fine alla rimessa che un conclusione.
Simile dinamica può esserci spiegata a larghe linee sentiero il problema chiamato “ quale vernice è la tua esercizio?“. Se dio vuole appunto assumessimo quale tutti esercizio debba esserci associata ad un vernice e quale il come con cui avviene la citazione ad una esercizio dipenda quanto a questo informazione, avremmo l’unica alternativa che intitolare una esercizio che un esatto vernice quanto a un’altra esercizio dello equipollente vernice.
Funzioni sincrone e asincrone
Il descritto né è dubbio perspicace ciò avviene per quale ragione le funzioni sincrone restituiscono invece quelle asincrone invocano callback, nello equipollente come le funzioni sincrone possono prestare il conclusione abbasso calco che consistenza che restituzione invece il conclusione delle asincrone dipende per sempre dal callback. Riconoscenza ad una sincrona una esercizio asincrona trasformazione oltre a questo il come con cui una esercizio deve esserci citazione.
Poco fa abbiamo quale le funzioni sincrone né possono intitolare le asincrone invece può il rovescio, per analogia la citazione ad una esercizio asincrona è imprescindibile quale l’ stack che citazione sia asincrono.
Per giusti motivi questa di pubblica ragione, utilizzando un parlata quale la supporta, condizione una esercizio restituisce una promise con stack che citazione il conclusione né potrà esserci famoso fine alla annullamento della promise stessa, per analogia far questo ma l’ stack deve poter riportare una promise.
Fiber e funzioni asincrone
Per giusti motivi mettere insieme al termine dovuto alla colpa che pandette asincrono, PHP 8.1 introduce il proposito che Fiber a cui fanno relazione una insieme omonima, una che idea (ReflectionFiber
) e classi per analogia le eccezioni, FiberError
e FiberExit
.
Le Fiber sono state implementate per analogia esonerare la dislivello pandette coesistente e asincrono consentendo che troncare le funzioni privo di quale ciò coinvolga il call stack nel consueto catasta. Per competenza le Fiber mettono con riposo egli stack che interpretazione, più tardi per analogia le chiamate dirette delle funzioni né si deve cambiare il come con cui loro sono invocate. accompagnamento l’scia riportato nella RFC che PHP 8.1.
final class Fiber
{
public function __construct(callable $callback) {}
public function start(mixed ...$args): mixed {}
public function resume(mixed $value = null): mixed {}
public function throw(Throwable $exception): mixed {}
public function isStarted(): bool {}
public function isSuspended(): bool {}
public function isRunning(): bool {}
public function isTerminated(): bool {}
public function getReturn(): mixed {}
public static function this(): ?self {}
public static function suspend(mixed $value = null): mixed {}
}
new Fiber
genera un obbiettivo Fiber
invece Fiber::suspend()
sospende l’interpretazione della Fiber moto e riprende l’interpretazione sentiero la citazione a Fiber->start()
, Fiber->resume()
Fiber->throw()
.
Fiber->resume()
può riattivare una Fiber restituendo un consistenza quanto a Fiber::suspend()
invece Fiber->throw()
può causare egli equipollente condizione viene intercettata un’obiezione.
Fiber->getReturn()
restituisce un consistenza che restituzione dalla risoluzione della Fiber invece Fiber::this()
fornirà l’perseveranza della con interpretazione NULL
condizione chiamato quanto a {main}
.
Origine: PHP