mirror of
https://github.com/kuaifan/dootask.git
synced 2026-06-25 00:32:13 +00:00
- bootstrap/app.php 改为 Application::configure() 链式配置: withRouting(web/api/console) + withMiddleware + withExceptions - 删除 app/Http/Kernel.php、app/Console/Kernel.php:全局/分组中间件 归并到 13 默认栈,定制项经 trustProxies/trimStrings/ validateCsrfTokens/throttleApi/alias(webapi) 配置 API 表达 - 删除 app/Exceptions/Handler.php:ApiException/ModelNotFound 渲染、 ApiException 条件日志(report->stop)迁入 withExceptions; 图片动态裁剪逻辑抽为 App\Exceptions\ImagePathHandler - 删除 RouteServiceProvider/EventServiceProvider/AuthServiceProvider/ BroadcastServiceProvider:限流、14 个模型观察者、Registered 监听 迁入 AppServiceProvider::boot;新增 bootstrap/providers.php - 删除 7 个框架默认中间件子类(TrustProxies/TrimStrings/VerifyCsrfToken/ EncryptCookies/Authenticate/RedirectIfAuthenticated/ PreventRequestsDuringMaintenance)与未启用的 TrustHosts, 保留自定义 WebApi - config/app.php 移除 providers/aliases 数组(改用框架默认集 + bootstrap/providers.php,补齐 9~13 新增的框架 provider) - artisan、public/index.php 换 13 骨架版(handleCommand/handleRequest) 验证:LaravelS 正常拉起,/health、登录、token 认证、WebSocket 握手、 头像、裁剪(经 withExceptions)、404 兜底全过;php artisan test 145 passed/1 skipped;migrate:fresh 213 全过 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
114 lines
3.6 KiB
PHP
114 lines
3.6 KiB
PHP
<?php
|
||
|
||
namespace App\Providers;
|
||
|
||
use App\Models\File;
|
||
use App\Models\FileUser;
|
||
use App\Models\Project;
|
||
use App\Models\ProjectTask;
|
||
use App\Models\ProjectTaskContent;
|
||
use App\Models\ProjectTaskUser;
|
||
use App\Models\ProjectTaskVisibilityUser;
|
||
use App\Models\ProjectUser;
|
||
use App\Models\User;
|
||
use App\Models\UserTag;
|
||
use App\Models\UserTagRecognition;
|
||
use App\Models\WebSocketDialog;
|
||
use App\Models\WebSocketDialogMsg;
|
||
use App\Models\WebSocketDialogUser;
|
||
use App\Observers\FileObserver;
|
||
use App\Observers\FileUserObserver;
|
||
use App\Observers\ProjectObserver;
|
||
use App\Observers\ProjectTaskContentObserver;
|
||
use App\Observers\ProjectTaskObserver;
|
||
use App\Observers\ProjectTaskUserObserver;
|
||
use App\Observers\ProjectTaskVisibilityUserObserver;
|
||
use App\Observers\ProjectUserObserver;
|
||
use App\Observers\UserObserver;
|
||
use App\Observers\UserTagObserver;
|
||
use App\Observers\UserTagRecognitionObserver;
|
||
use App\Observers\WebSocketDialogMsgObserver;
|
||
use App\Observers\WebSocketDialogObserver;
|
||
use App\Observers\WebSocketDialogUserObserver;
|
||
use Illuminate\Auth\Events\Registered;
|
||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
||
use Illuminate\Cache\RateLimiting\Limit;
|
||
use Illuminate\Http\Request;
|
||
use Illuminate\Support\Facades\Event;
|
||
use Illuminate\Support\Facades\RateLimiter;
|
||
use Illuminate\Support\ServiceProvider;
|
||
|
||
class AppServiceProvider extends ServiceProvider
|
||
{
|
||
/**
|
||
* Register any application services.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function register()
|
||
{
|
||
//
|
||
}
|
||
|
||
/**
|
||
* Bootstrap any application services.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function boot()
|
||
{
|
||
\Illuminate\Database\Query\Builder::macro('rawSql', function(){
|
||
return array_reduce($this->getBindings(), function($sql, $binding){
|
||
return preg_replace('/\?/', is_numeric($binding) ? $binding : "'".$binding."'" , $sql, 1);
|
||
}, $this->toSql());
|
||
});
|
||
|
||
\Illuminate\Database\Eloquent\Builder::macro('rawSql', function(){
|
||
return ($this->getQuery()->rawSql());
|
||
});
|
||
|
||
$this->configureRateLimiting();
|
||
$this->registerEvents();
|
||
$this->registerObservers();
|
||
}
|
||
|
||
/**
|
||
* api 组限流(原 RouteServiceProvider::configureRateLimiting)
|
||
*/
|
||
protected function configureRateLimiting()
|
||
{
|
||
RateLimiter::for('api', function (Request $request) {
|
||
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 事件监听(原 EventServiceProvider::$listen)
|
||
*/
|
||
protected function registerEvents()
|
||
{
|
||
Event::listen(Registered::class, SendEmailVerificationNotification::class);
|
||
}
|
||
|
||
/**
|
||
* 模型观察者(原 EventServiceProvider::boot)
|
||
*/
|
||
protected function registerObservers()
|
||
{
|
||
File::observe(FileObserver::class);
|
||
FileUser::observe(FileUserObserver::class);
|
||
Project::observe(ProjectObserver::class);
|
||
ProjectTask::observe(ProjectTaskObserver::class);
|
||
ProjectTaskContent::observe(ProjectTaskContentObserver::class);
|
||
ProjectTaskUser::observe(ProjectTaskUserObserver::class);
|
||
ProjectTaskVisibilityUser::observe(ProjectTaskVisibilityUserObserver::class);
|
||
ProjectUser::observe(ProjectUserObserver::class);
|
||
User::observe(UserObserver::class);
|
||
UserTag::observe(UserTagObserver::class);
|
||
UserTagRecognition::observe(UserTagRecognitionObserver::class);
|
||
WebSocketDialog::observe(WebSocketDialogObserver::class);
|
||
WebSocketDialogMsg::observe(WebSocketDialogMsgObserver::class);
|
||
WebSocketDialogUser::observe(WebSocketDialogUserObserver::class);
|
||
}
|
||
}
|