|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- /**
- * This file is part of webman.
- *
- * Licensed under The MIT License
- * For full copyright and license information, please see the MIT-LICENSE.txt
- * Redistributions of files must retain the above copyright notice.
- *
- * @author walkor<walkor@workerman.net>
- * @copyright walkor<walkor@workerman.net>
- * @link http://www.workerman.net/
- * @license http://www.opensource.org/licenses/mit-license.php MIT License
- */
-
- use Dotenv\Dotenv;
- use support\Log;
- use Webman\Bootstrap;
- use Webman\Config;
- use Webman\Route;
- use Webman\Middleware;
- use Webman\Util;
-
- $worker = $worker ?? null;
-
- if ($timezone = config('app.default_timezone')) {
- date_default_timezone_set($timezone);
- }
-
- set_error_handler(function ($level, $message, $file = '', $line = 0) {
- if (error_reporting() & $level) {
- throw new ErrorException($message, 0, $level, $file, $line);
- }
- });
-
- if ($worker) {
- register_shutdown_function(function ($start_time) {
- if (time() - $start_time <= 1) {
- sleep(1);
- }
- }, time());
- }
-
- if (class_exists('Dotenv\Dotenv') && file_exists(base_path() . '/.env')) {
- if (method_exists('Dotenv\Dotenv', 'createUnsafeImmutable')) {
- Dotenv::createUnsafeImmutable(base_path())->load();
- } else {
- Dotenv::createMutable(base_path())->load();
- }
- }
-
- Support\App::loadAllConfig(['route']);
-
- foreach (config('autoload.files', []) as $file) {
- include_once $file;
- }
- foreach (config('plugin', []) as $firm => $projects) {
- foreach ($projects as $name => $project) {
- if (!is_array($project)) {
- continue;
- }
- foreach ($project['autoload']['files'] ?? [] as $file) {
- include_once $file;
- }
- }
- foreach ($projects['autoload']['files'] ?? [] as $file) {
- include_once $file;
- }
- }
-
- Middleware::load(config('middleware', []), '');
- foreach (config('plugin', []) as $firm => $projects) {
- foreach ($projects as $name => $project) {
- if (!is_array($project) || $name === 'static') {
- continue;
- }
- Middleware::load($project['middleware'] ?? [], '');
- }
- Middleware::load($projects['middleware'] ?? [], $firm);
- if ($static_middlewares = config("plugin.$firm.static.middleware")) {
- Middleware::load(['__static__' => $static_middlewares], $firm);
- }
- }
- Middleware::load(['__static__' => config('static.middleware', [])], '');
-
- foreach (config('bootstrap', []) as $class_name) {
- if (!class_exists($class_name)) {
- $log = "Warning: Class $class_name setting in config/bootstrap.php not found\r\n";
- echo $log;
- Log::error($log);
- continue;
- }
- /** @var Bootstrap $class_name */
- $class_name::start($worker);
- }
-
- foreach (config('plugin', []) as $firm => $projects) {
- foreach ($projects as $name => $project) {
- if (!is_array($project)) {
- continue;
- }
- foreach ($project['bootstrap'] ?? [] as $class_name) {
- if (!class_exists($class_name)) {
- $log = "Warning: Class $class_name setting in config/plugin/$firm/$name/bootstrap.php not found\r\n";
- echo $log;
- Log::error($log);
- continue;
- }
- /** @var Bootstrap $class_name */
- $class_name::start($worker);
- }
- }
- foreach ($projects['bootstrap'] ?? [] as $class_name) {
- if (!class_exists($class_name)) {
- $log = "Warning: Class $class_name setting in plugin/$firm/config/bootstrap.php not found\r\n";
- echo $log;
- Log::error($log);
- continue;
- }
- /** @var Bootstrap $class_name */
- $class_name::start($worker);
- }
- }
-
- $directory = base_path() . '/plugin';
- $paths = [config_path()];
- foreach (Util::scanDir($directory) as $path) {
- if (is_dir($path = "$path/config")) {
- $paths[] = $path;
- }
- }
- Route::load($paths);
-
|