From 4b1a299b3c1f9570bfc6137ed6d3d25c0f154377 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Sun, 21 Jan 2018 22:38:06 +0100 Subject: [PATCH] Convert closures in arrays to Compat extenders as well Refs #851. --- src/Extension/ExtensionManager.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Extension/ExtensionManager.php b/src/Extension/ExtensionManager.php index ad0df4278..fad49829f 100644 --- a/src/Extension/ExtensionManager.php +++ b/src/Extension/ExtensionManager.php @@ -284,19 +284,19 @@ class ExtensionManager ->flatMap(function (Extension $extension) { $bootstrapper = $extension->getBootstrapperPath(); if ($this->filesystem->exists($bootstrapper)) { - $extenders = require $bootstrapper; - - if (is_array($extenders)) { - return $extenders; - } - - // Assume that the extension has not yet switched to the new - // bootstrap.php format, and wrap the callback in a Compat - // extender. - return [new Compat($extenders)]; + return (array) require $bootstrapper; } else { return []; } + })->map(function ($extender) { + // If an extension has not yet switched to the new bootstrap.php + // format, it might return a function (or more of them). We wrap + // these in a Compat extender to enjoy an unique interface. + if ($extender instanceof \Closure) { + return new Compat($extender); + } else { + return $extender; + } }); }