Use full function namespaces to avoid clashes with serialization #179
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Promise.php
contains function calls (resolve
andreject
fromsrc/functions.php
) that expect the current namespace. However if you serialize & then later unserialize aDeferred
instance, this namespace is lost, and the function calls clash with other defined global functions.E.g. if using Laravel, you configure & then serialize a
\React\Promise\Deferred
instance, and then later unserialize & attempt to resolve it - the call toresolve
on line 232 clashes with Laravel's globalresolve
function - causing it to throw an exception as it runs through the global Laravel function.Using Opis/Closure for serializing.
By using the full namespace on the function call this eliminates this possible problem. Also makes the code an easier read IMO making it obvious that these are namespaced (and not global) functions.