在 Laravel 应用中,AppServiceProvider 是一个核心的服务提供者,它负责引导和配置应用的基础功能。
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Model;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Vite;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*/
public function boot(): void
{
$this->configureCommands();
$this->configureModels();
$this->configureUrl();
$this->configureVite();
}
// ...
}
以下是 4 个在 AppServiceProvider 中必不可少的功能配置。
配置数据库安全命令
use Illuminate\Support\Facades\DB;
private function configureCommands(): void
{
DB::prohibitDestructiveCommands(
$this->app->isProduction()
);
}
在生产环境中禁用破坏性的数据库命令是一个很好的安全实践,通过 prohibitDestructiveCommands
方法可以防止意外的数据库操作。
配置模型行为
use Illuminate\Support\Facades\Model;
private function configureModels(): void
{
Model::shouldBeStrict();
Model::unguard();
}
通过 shouldBeStrict
方法可以强制模型在开发环境中严格模式下运行,从而捕获潜在的错误。
unguard
方法则允许模型在开发环境中绕过授权检查,方便调试。
强制 HTTPS
use Illuminate\Support\Facades\URL;
private function configureUrl(): void
{
URL::forceScheme('https');
}
通过 forceScheme
方法强制所有 URL 使用 HTTPS 协议,确保应用在生产环境中安全可靠。
优化资源加载
use Illuminate\Support\Facades\Vite;
private function configureVite(): void
{
Vite::usePrefetchStrategy('aggressive');
}
通过配置 Vite
的预加载策略,可以优化前端资源的加载性能。