서비스 제공자 - 라라벨
9895 단어 webdevprogramminglaravelphp
Laravel에 포함된 기본 서비스 공급자부터 시작하겠습니다. 이들은 모두 app/Providers 폴더에 있습니다.
해당 메소드 내부
boot()
에서 인증, 이벤트, 경로 등 섹션 중 하나와 관련된 모든 코드를 작성할 수 있습니다. 즉, 서비스 공급자는 일부 전역 기능을 등록하는 클래스일 뿐입니다.class RouteServiceProvider extends ServiceProvider
{
public const HOME = '/dashboard';
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->group(base_path('routes/api.php'));
Route::middleware('web')
->group(base_path('routes/web.php'));
});
}
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});
}
}
AppServiceProvider에 코드를 추가하는 인기 있는 예 중 하나는 Eloquent에서 지연 로딩을 비활성화하는 것입니다. 그렇게 하려면 boot() 메서드에 두 줄만 추가하면 됩니다.
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
어떤 공급자가 로드됩니까? config/app.php 배열에 정의되어 있습니다.
return [
// ... other configuration values
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
// ... other framework providers from /vendor
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/*
* PUBLIC Service Providers - the ones we mentioned above
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
],
];
이 명령으로 생성할 수 있습니다.
php artisan make:provider ViewServiceProvider
boot() 내부에 Blade 지시문 코드 추가
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
class ViewServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
}
실행하려면 위에서 언급한 대로 이 새 공급자를 config/app.php의 공급자 배열에 추가해야 합니다.
return [
// ... other configuration values
'providers' => [
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
// Add your provider here
App\Providers\ViewServiceProvider::class,
],
];
그는 요점에 대해 이야기했으며 소스를 방문하여 더 깊이 파고들고 오픈 소스 프로젝트에서 몇 가지 예를 배우기를 바랍니다. 즐거운 시간 되셨기를 바랍니다.
Reference
이 문제에 관하여(서비스 제공자 - 라라벨), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/morcosgad/service-providers-laravel-18jo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)