diff --git a/composer.json b/composer.json index b66e2d24b3b2..60d303b8a4c4 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,6 @@ "league/flysystem": "^2.0", "monolog/monolog": "^2.0", "nesbot/carbon": "^2.31", - "opis/closure": "^3.6", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0", "psr/simple-cache": "^1.0", diff --git a/src/Illuminate/Bus/PendingBatch.php b/src/Illuminate/Bus/PendingBatch.php index a831c5fbf7e8..a278ed53841c 100644 --- a/src/Illuminate/Bus/PendingBatch.php +++ b/src/Illuminate/Bus/PendingBatch.php @@ -6,9 +6,9 @@ use Illuminate\Bus\Events\BatchDispatched; use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Events\Dispatcher as EventDispatcher; -use Illuminate\Queue\SerializableClosureFactory; use Illuminate\Support\Arr; use Illuminate\Support\Collection; +use Laravel\SerializableClosure\SerializableClosure; use Throwable; class PendingBatch @@ -78,7 +78,7 @@ public function add($jobs) public function then($callback) { $this->options['then'][] = $callback instanceof Closure - ? SerializableClosureFactory::make($callback) + ? new SerializableClosure($callback) : $callback; return $this; @@ -103,7 +103,7 @@ public function thenCallbacks() public function catch($callback) { $this->options['catch'][] = $callback instanceof Closure - ? SerializableClosureFactory::make($callback) + ? new SerializableClosure($callback) : $callback; return $this; @@ -128,7 +128,7 @@ public function catchCallbacks() public function finally($callback) { $this->options['finally'][] = $callback instanceof Closure - ? SerializableClosureFactory::make($callback) + ? new SerializableClosure($callback) : $callback; return $this; diff --git a/src/Illuminate/Encryption/EncryptionServiceProvider.php b/src/Illuminate/Encryption/EncryptionServiceProvider.php index 4ef42ba4c32c..a4d27a3720b9 100755 --- a/src/Illuminate/Encryption/EncryptionServiceProvider.php +++ b/src/Illuminate/Encryption/EncryptionServiceProvider.php @@ -5,7 +5,6 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; use Laravel\SerializableClosure\SerializableClosure; -use Opis\Closure\SerializableClosure as OpisSerializableClosure; class EncryptionServiceProvider extends ServiceProvider { @@ -17,7 +16,6 @@ class EncryptionServiceProvider extends ServiceProvider public function register() { $this->registerEncrypter(); - $this->registerOpisSecurityKey(); $this->registerSerializableClosureSecurityKey(); } @@ -35,26 +33,6 @@ protected function registerEncrypter() }); } - /** - * Configure Opis Closure signing for security. - * - * @return void - * - * @deprecated Will be removed in a future Laravel version. - */ - protected function registerOpisSecurityKey() - { - if (\PHP_VERSION_ID < 80100) { - $config = $this->app->make('config')->get('app'); - - if (! class_exists(OpisSerializableClosure::class) || empty($config['key'])) { - return; - } - - OpisSerializableClosure::setSecretKey($this->parseKey($config)); - } - } - /** * Configure Serializable Closure signing for security. * diff --git a/src/Illuminate/Events/QueuedClosure.php b/src/Illuminate/Events/QueuedClosure.php index 82590598447a..9f6849884ae1 100644 --- a/src/Illuminate/Events/QueuedClosure.php +++ b/src/Illuminate/Events/QueuedClosure.php @@ -3,7 +3,7 @@ namespace Illuminate\Events; use Closure; -use Illuminate\Queue\SerializableClosureFactory; +use Laravel\SerializableClosure\SerializableClosure; class QueuedClosure { @@ -114,10 +114,10 @@ public function resolve() { return function (...$arguments) { dispatch(new CallQueuedListener(InvokeQueuedClosure::class, 'handle', [ - 'closure' => SerializableClosureFactory::make($this->closure), + 'closure' => new SerializableClosure($this->closure), 'arguments' => $arguments, 'catch' => collect($this->catchCallbacks)->map(function ($callback) { - return SerializableClosureFactory::make($callback); + return new SerializableClosure($callback); })->all(), ]))->onConnection($this->connection)->onQueue($this->queue)->delay($this->delay); }; diff --git a/src/Illuminate/Foundation/Bus/PendingChain.php b/src/Illuminate/Foundation/Bus/PendingChain.php index 73ae364c55ea..20809db3d7c7 100644 --- a/src/Illuminate/Foundation/Bus/PendingChain.php +++ b/src/Illuminate/Foundation/Bus/PendingChain.php @@ -5,7 +5,7 @@ use Closure; use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Queue\CallQueuedClosure; -use Illuminate\Queue\SerializableClosureFactory; +use Laravel\SerializableClosure\SerializableClosure; class PendingChain { @@ -112,7 +112,7 @@ public function delay($delay) public function catch($callback) { $this->catchCallbacks[] = $callback instanceof Closure - ? SerializableClosureFactory::make($callback) + ? new SerializableClosure($callback) : $callback; return $this; diff --git a/src/Illuminate/Queue/CallQueuedClosure.php b/src/Illuminate/Queue/CallQueuedClosure.php index 24a72d966c57..58155523b283 100644 --- a/src/Illuminate/Queue/CallQueuedClosure.php +++ b/src/Illuminate/Queue/CallQueuedClosure.php @@ -8,6 +8,7 @@ use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Laravel\SerializableClosure\SerializableClosure; use ReflectionFunction; class CallQueuedClosure implements ShouldQueue @@ -54,7 +55,7 @@ public function __construct($closure) */ public static function create(Closure $job) { - return new self(SerializableClosureFactory::make($job)); + return new self(new SerializableClosure($job)); } /** @@ -77,7 +78,7 @@ public function handle(Container $container) public function onFailure($callback) { $this->failureCallbacks[] = $callback instanceof Closure - ? SerializableClosureFactory::make($callback) + ? new SerializableClosure($callback) : $callback; return $this; diff --git a/src/Illuminate/Queue/SerializableClosure.php b/src/Illuminate/Queue/SerializableClosure.php deleted file mode 100644 index cb0a587dc99d..000000000000 --- a/src/Illuminate/Queue/SerializableClosure.php +++ /dev/null @@ -1,43 +0,0 @@ - $value) { - $data[$key] = $this->getSerializedPropertyValue($value); - } - - return $data; - } - - /** - * Resolve the use variables after unserialization. - * - * @param array $data - * @return array - */ - protected function resolveUseVariables($data) - { - foreach ($data as $key => $value) { - $data[$key] = $this->getRestoredPropertyValue($value); - } - - return $data; - } -} diff --git a/src/Illuminate/Queue/SerializableClosureFactory.php b/src/Illuminate/Queue/SerializableClosureFactory.php deleted file mode 100644 index aa5b8a8a7b03..000000000000 --- a/src/Illuminate/Queue/SerializableClosureFactory.php +++ /dev/null @@ -1,25 +0,0 @@ -action['uses'] instanceof Closure) { - $this->action['uses'] = serialize(\PHP_VERSION_ID < 70400 - ? new OpisSerializableClosure($this->action['uses']) - : new SerializableClosure($this->action['uses']) + $this->action['uses'] = serialize( + new SerializableClosure($this->action['uses']) ); } if (isset($this->action['missing']) && $this->action['missing'] instanceof Closure) { - $this->action['missing'] = serialize(\PHP_VERSION_ID < 70400 - ? new OpisSerializableClosure($this->action['missing']) - : new SerializableClosure($this->action['missing']) + $this->action['missing'] = serialize( + new SerializableClosure($this->action['missing']) ); } diff --git a/src/Illuminate/Routing/RouteAction.php b/src/Illuminate/Routing/RouteAction.php index b356f974cc99..a420d1defbbf 100644 --- a/src/Illuminate/Routing/RouteAction.php +++ b/src/Illuminate/Routing/RouteAction.php @@ -104,7 +104,6 @@ protected static function makeInvokable($action) public static function containsSerializedClosure(array $action) { return is_string($action['uses']) && Str::startsWith($action['uses'], [ - 'C:32:"Opis\\Closure\\SerializableClosure', 'O:47:"Laravel\\SerializableClosure\\SerializableClosure', ]) !== false; } diff --git a/tests/Routing/RouteActionTest.php b/tests/Routing/RouteActionTest.php index dcc403f0fb10..31dd7f32f2a1 100644 --- a/tests/Routing/RouteActionTest.php +++ b/tests/Routing/RouteActionTest.php @@ -5,7 +5,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Routing\RouteAction; use Laravel\SerializableClosure\SerializableClosure; -use Opis\Closure\SerializableClosure as OpisSerializableClosure; use PHPUnit\Framework\TestCase; class RouteActionTest extends TestCase @@ -16,9 +15,8 @@ public function test_it_can_detect_a_serialized_closure() return $user; }; - $action = ['uses' => serialize(\PHP_VERSION_ID < 70400 - ? new OpisSerializableClosure($callable) - : new SerializableClosure($callable) + $action = ['uses' => serialize( + new SerializableClosure($callable) )]; $this->assertTrue(RouteAction::containsSerializedClosure($action)); diff --git a/tests/Routing/RouteSignatureParametersTest.php b/tests/Routing/RouteSignatureParametersTest.php index d3cfe254767a..2286cd972a25 100644 --- a/tests/Routing/RouteSignatureParametersTest.php +++ b/tests/Routing/RouteSignatureParametersTest.php @@ -5,7 +5,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Routing\RouteSignatureParameters; use Laravel\SerializableClosure\SerializableClosure; -use Opis\Closure\SerializableClosure as OpisSerializableClosure; use PHPUnit\Framework\TestCase; use ReflectionParameter; @@ -17,9 +16,8 @@ public function test_it_can_extract_the_route_action_signature_parameters() return $user; }; - $action = ['uses' => serialize(\PHP_VERSION_ID < 70400 - ? new OpisSerializableClosure($callable) - : new SerializableClosure($callable) + $action = ['uses' => serialize( + new SerializableClosure($callable) )]; $parameters = RouteSignatureParameters::fromAction($action);