From f7458bc638785c38a74f66adf56445a96aa6adc7 Mon Sep 17 00:00:00 2001 From: printempw Date: Sun, 28 Aug 2016 18:32:38 +0800 Subject: [PATCH] register services providers manually at setup --- setup/bootstrap.php | 88 +++++++++++++++++++++++++++++++++++++++++++++ setup/index.php | 18 +++------- 2 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 setup/bootstrap.php diff --git a/setup/bootstrap.php b/setup/bootstrap.php new file mode 100644 index 00000000..8eccd809 --- /dev/null +++ b/setup/bootstrap.php @@ -0,0 +1,88 @@ +load(); +} else { + exit('错误:.env 配置文件不存在'); +} + +// Register Error Hanlders +$whoops = new \Whoops\Run; +$handler = new \Whoops\Handler\PrettyPageHandler; +$whoops->pushHandler($handler); +$whoops->register(); + +$app = new Illuminate\Foundation\Application(BASE_DIR); + +Illuminate\Support\Facades\Facade::setFacadeApplication($app); + +(new Illuminate\View\ViewServiceProvider($app))->register(); +(new Illuminate\Foundation\Bootstrap\LoadConfiguration)->bootstrap($app); + +(new Illuminate\Database\DatabaseServiceProvider($app))->register(); +(new Illuminate\Filesystem\FilesystemServiceProvider($app))->register(); +(new Illuminate\Foundation\Bootstrap\LoadConfiguration)->bootstrap($app); + +$app->singleton('database', \App\Services\Database\Database::class); + +require BASE_DIR.'/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php'; + +// Load Aliases +$config = require BASE_DIR.'/config/app.php'; + +foreach ($config['aliases'] as $facade => $class) { + class_alias($class, $facade); +} + +\View::addExtension('tpl', 'blade'); + +// Set Default Timezone to UTC+8 +date_default_timezone_set('Asia/Shanghai'); + + + +$config = require BASE_DIR.'/config/database.php'; + +$db_config = $config['connections']['mysql']; + +// Check Database Config +@$conn = new \mysqli($db_config['host'], $db_config['username'], $db_config['password'], $db_config['database'], $db_config['port']); + +if ($conn->connect_error) { + throw new App\Exceptions\E("无法连接至 MySQL 服务器,请检查你的配置:".$conn->connect_error, $conn->connect_errno, true); +} + +// Boot Eloquent ORM +$capsule = new \Illuminate\Database\Capsule\Manager; +$capsule->addConnection($db_config); +$capsule->setAsGlobal(); +$capsule->bootEloquent(); + +// Start Session +session_start(); + +function checkTableExist() { + $tables = ['users', 'closets', 'players', 'textures', 'options']; + + foreach ($tables as $table_name) { + // prefix will be added automatically + if (!Database::hasTable($table_name)) { + return false; + } + } + + return true; +} + + diff --git a/setup/index.php b/setup/index.php index 5f60a832..9b6fa624 100644 --- a/setup/index.php +++ b/setup/index.php @@ -3,21 +3,11 @@ * Installation of Blessing Skin Server */ -// Define Base Directory -define('BASE_DIR', dirname(dirname(__FILE__))); - // Register Composer Auto Loader -require BASE_DIR.'/vendor/autoload.php'; - -// Initialize Application -$app = new Blessing\Foundation\Application(); -$app->boot(); -Boot::registerErrorHandler(new \Whoops\Handler\PrettyPageHandler); - -$db_config = Config::getDbConfig(); +require __DIR__."/bootstrap.php"; // If already installed -if (Config::checkTableExist($db_config)) { +if (checkTableExist()) { View::show('setup.locked'); exit; } @@ -64,13 +54,13 @@ switch ($step) { } // create tables - Migration::creatTables($db_config['prefix']); + App\Services\Database\Migration::creatTables($db_config['prefix']); // import options $options = require "options.php"; $options['site_name'] = $_POST['sitename']; $options['site_url'] = Http::getBaseUrl(); - $options['version'] = App::version(); + $options['version'] = config('app.version'); $options['announcement'] = str_replace('{version}', $options['version'], $options['announcement']); foreach ($options as $key => $value) {