mirror of
https://github.com/flarum/framework.git
synced 2025-02-21 16:24:27 +08:00
Change order of bootstrapping
See commit on flarum/flarum for explanation
This commit is contained in:
parent
77d0bfccd7
commit
74593d82ac
@ -1,7 +1,5 @@
|
||||
<?php namespace Flarum\Core;
|
||||
|
||||
use Flarum\Core\Settings\MemoryCacheSettingsRepository;
|
||||
use Flarum\Core\Settings\DatabaseSettingsRepository;
|
||||
use Flarum\Core\Users\User;
|
||||
use Flarum\Events\ModelAllow;
|
||||
use Flarum\Support\ServiceProvider;
|
||||
@ -39,14 +37,6 @@ class CoreServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton('Flarum\Core\Settings\SettingsRepository', function () {
|
||||
return new MemoryCacheSettingsRepository(
|
||||
new DatabaseSettingsRepository(
|
||||
$this->app->make('Illuminate\Database\ConnectionInterface')
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
$this->app->singleton('flarum.forum', 'Flarum\Core\Forum');
|
||||
|
||||
// TODO: probably use Illuminate's AggregateServiceProvider
|
||||
|
22
framework/core/src/Core/Settings/SettingsServiceProvider.php
Normal file
22
framework/core/src/Core/Settings/SettingsServiceProvider.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php namespace Flarum\Core\Settings;
|
||||
|
||||
use Flarum\Support\ServiceProvider;
|
||||
|
||||
class SettingsServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton('Flarum\Core\Settings\SettingsRepository', function () {
|
||||
return new MemoryCacheSettingsRepository(
|
||||
new DatabaseSettingsRepository(
|
||||
$this->app->make('Illuminate\Database\ConnectionInterface')
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
7
framework/core/src/Support/Extension.php
Normal file
7
framework/core/src/Support/Extension.php
Normal file
@ -0,0 +1,7 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
use Flarum\Support\ServiceProvider;
|
||||
|
||||
class Extension extends ServiceProvider
|
||||
{
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
<?php namespace Flarum\Support\Extensions;
|
||||
|
||||
use Flarum\Core;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class ExtensionsServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Boot the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
// Extensions will not be registered if Flarum is not installed yet
|
||||
if (!Core::isInstalled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$config = $this->app->make('Flarum\Core\Settings\SettingsRepository')->get('extensions_enabled');
|
||||
$extensions = json_decode($config, true);
|
||||
$providers = [];
|
||||
|
||||
foreach ($extensions as $extension) {
|
||||
if (file_exists($file = public_path().'/extensions/'.$extension.'/bootstrap.php') ||
|
||||
file_exists($file = base_path().'/extensions/'.$extension.'/bootstrap.php')) {
|
||||
$providers[$extension] = require $file;
|
||||
}
|
||||
}
|
||||
|
||||
// @todo store $providers somewhere (in Core?) so that extensions can talk to each other
|
||||
}
|
||||
}
|
23
framework/core/src/Support/ExtensionsServiceProvider.php
Normal file
23
framework/core/src/Support/ExtensionsServiceProvider.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
class ExtensionsServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$config = $this->app->make('Flarum\Core\Settings\SettingsRepository')->get('extensions_enabled');
|
||||
$extensions = json_decode($config, true);
|
||||
$providers = [];
|
||||
|
||||
foreach ($extensions as $extension) {
|
||||
if (file_exists($file = public_path().'/extensions/'.$extension.'/bootstrap.php')) {
|
||||
$providerName = require $file;
|
||||
$providers[$extension] = $this->app->register($providerName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +1,9 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
use Flarum\Extend\ExtenderInterface;
|
||||
use Illuminate\Support\ServiceProvider as IlluminateServiceProvider;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
use InvalidArgumentException;
|
||||
|
||||
class ServiceProvider extends IlluminateServiceProvider
|
||||
{
|
||||
/**
|
||||
* Bootstrap the application events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
$this->extend($this->extenders());
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
@ -25,32 +12,4 @@ class ServiceProvider extends IlluminateServiceProvider
|
||||
public function register()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ExtenderInterface[]
|
||||
*/
|
||||
public function extenders()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ExtenderInterface|ExtenderInterface[] $extenders
|
||||
* @return void
|
||||
*/
|
||||
protected function extend($extenders)
|
||||
{
|
||||
if (! is_array($extenders)) {
|
||||
$extenders = [$extenders];
|
||||
}
|
||||
|
||||
foreach ($extenders as $extender) {
|
||||
if (! $extender instanceof ExtenderInterface) {
|
||||
throw new InvalidArgumentException('Argument must be an object of type '
|
||||
. ExtenderInterface::class);
|
||||
}
|
||||
|
||||
$extender->extend($this->app);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user