From 3a4045ea49e4aaae0cf3d38f29d9c5dd3693a004 Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 24 Aug 2018 00:08:56 +0200 Subject: [PATCH] Rename extension's bootstrap.php to extend.php ...while supporting the old name for a while. Fixes #1556. Refs #1557. --- framework/core/src/Extension/Extension.php | 52 ++++++++++++++-------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/framework/core/src/Extension/Extension.php b/framework/core/src/Extension/Extension.php index 21600ffda..74038eae8 100644 --- a/framework/core/src/Extension/Extension.php +++ b/framework/core/src/Extension/Extension.php @@ -113,22 +113,8 @@ class Extension implements Arrayable public function extend(Container $app) { - $bootstrapper = $this->getBootstrapperPath(); - - if (! file_exists($bootstrapper)) { - return; - } - - $extenders = require $bootstrapper; - - if (! is_array($extenders)) { - $extenders = [$extenders]; - } - - $extenders = array_flatten($extenders); - - foreach ($extenders as $extender) { - // If an extension has not yet switched to the new bootstrap.php + foreach ($this->getExtenders() as $extender) { + // If an extension has not yet switched to the new extend.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 || is_string($extender)) { @@ -274,9 +260,39 @@ class Extension implements Arrayable return $this->path; } - public function getBootstrapperPath() + private function getExtenders(): array { - return "{$this->path}/bootstrap.php"; + $extenderFile = $this->getExtenderFile(); + + if (! $extenderFile) { + return []; + } + + $extenders = require $extenderFile; + + if (! is_array($extenders)) { + $extenders = [$extenders]; + } + + return array_flatten($extenders); + } + + private function getExtenderFile(): ?string + { + $filename = "{$this->path}/extend.php"; + + if (file_exists($filename)) { + return $filename; + } + + // To give extension authors some time to migrate to the new extension + // format, we will also fallback to the old bootstrap.php name. Consider + // this feature deprecated. + $deprecatedFilename = "{$this->path}/bootstrap.php"; + + if (file_exists($deprecatedFilename)) { + return $deprecatedFilename; + } } /**