Ni awọn ọrọ miiran, awọn olupese iṣẹ dabi eefun nipasẹ eyiti a da epo “kilasi” sinu ojò ti a pe ni “epo iṣẹ” ti ẹrọ ti a pe ni Laravel.
Ti a ba ṣii config/app.php a yoo ri orun pẹlu orukọ "olupese"
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
.
.
.
],
Iwọnyi jẹ diẹ ninu awọn olupese iṣẹ ti a pese papọ pẹlu laravel, ie awọn iṣẹ ipilẹ eyiti a gbe sinu eiyan iṣẹ.
service provider
ṣe wọn ṣe?Ti a ba wo awọn iwe lori ìbéèrè lifecycle , awọn faili wọnyi ti wa ni ṣiṣe ni ibẹrẹ:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
ati tirẹ Middlewares
Service Providers
: akoonu ti yi articleEwo ni service provider
ti wa ni ti kojọpọ?
Awon yen ni definited ni orun 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,
],
];
Bi a ti le ri, nibẹ ni akojọ kan ti service provider
kii ṣe gbangba ni folda /vendor
, a ko yẹ ki o fi ọwọ kan tabi ṣe atunṣe wọn. Awon ti o anfani wa ni isalẹ, pẹlu BroadcastServicerProvider
alaabo nipa aiyipada, jasi nitori ti o ti wa ni ṣọwọn lo.
Gbogbo awọn olupese iṣẹ wọnyi nṣiṣẹ lati oke de isalẹ, tun ṣe atokọ naa lemeji:
register()
, wulo fun (bakẹhin) ṣiṣe nkan ti o tunto ṣaaju ọna naa boot()
.boot()
ti gbogbo awọn olupese. Lẹẹkansi, ọkan nipasẹ ọkan, oke si isalẹ, ti orun 'providers'
.I Service Providers
to wa ni Laravel, ti wa ni gbogbo awọn ti o wa ninu folda app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
Gbogbo wọn jẹ awọn kilasi PHP, ọkọọkan ni ibatan si koko tirẹ: App
, Auth
, Broadcasting
, Events
e Routes
. Ṣugbọn gbogbo wọn ni ohun kan ni wọpọ: ọna boot()
.
Ninu ọna yẹn, a le kọ koodu eyikeyi ti o ni ibatan si eyikeyi awọn apakan wọnyẹn: auth
, events
, route
, ati be be lo. Ni awọn ọrọ miiran, Awọn olupese iṣẹ jẹ awọn kilasi lati forukọsilẹ diẹ ninu iṣẹ ṣiṣe agbaye.
Wọn jẹ lọtọ bi “olupese” nitori pe wọn ṣiṣẹ ni kutukutu igbesi aye ohun elo, nitorinaa ohunkan agbaye rọrun nibi ṣaaju ki iwe afọwọṣe ti n ṣiṣẹ si Awọn awoṣe tabi Awọn oludari.
Pupọ julọ iṣẹ ṣiṣe wa ni Olupese RouteService, eyi ni koodu naa:
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());
});
}
}
Eyi ni kilasi nibiti a ti tunto awọn faili route
, pẹlu routes/web.php
e routes/api.php
to wa nipa aiyipadadefinita. Ṣe akiyesi pe fun API awọn atunto oriṣiriṣi tun wa: Apejuwe ipari ipari /api
ati middleware api
fun gbogbo routes
.
A le ṣatunkọ awọn service providers
, eyi ti ko si ninu awọn folda /vendor
. Isọdi awọn faili wọnyi ni a ṣe nigbati o ni ọpọlọpọ awọn ọna ati fẹ lati ya wọn sọtọ si awọn faili kan pato. O ṣẹda routes/auth.php
ki o si fi awọn ọna sibẹ, lẹhinna o "ṣiṣẹ" faili naa ni ọna naa boot()
di RouteServiceProvider
, kan fi gbolohun kẹta kun:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
ofo ni. A aṣoju apẹẹrẹ ti fifi koodu AppServiceProvider
, jẹ nipa pipaṣẹ ikojọpọ ọlẹ ni Eloquent. Lati ṣe eyi, o kan nilo fi meji ila ni ọna boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Eleyi yoo jabọ ohun sile ti o ba ti a ibasepo awoṣe ti ko ba kojọpọ.
service provider
adaniNi afikun si awọn ṣaajudefinited tẹlẹ eyi, a le awọn iṣọrọ ṣẹda titun kan Service Provider
, ti o jọmọ awọn koko-ọrọ miiran ju awọn ti iṣaaju lọdefikedere bi auth
/event
/routes
.
A iṣẹtọ aṣoju apẹẹrẹ ni wiwo iṣeto ni Blade
. A le ṣẹda itọsọna kan Blade
, ati lẹhinna ṣafikun koodu yẹn sinu ọna naa boot(
) ti eyikeyi service provider
, pẹlu aiyipada AppServiceProvider
. Jẹ ki a ṣẹda bayi ViewServiceProvider
lọtọ.
A le ṣe ipilẹṣẹ pẹlu aṣẹ yii:
php artisan make:provider ViewServiceProvider
Eyi ti yoo ṣe ipilẹṣẹ kilasi ṣaajudefinito:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
Bi a ti le rii ni inu awọn ọna meji wa:
Ọna iforukọsilẹ () gba wa laaye lati definish awọn ọna asopọ si eiyan iṣẹ wa. Fun apẹẹrẹ, ninu koodu atẹle:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$this-> app jẹ oniyipada agbaye ni laravel ti kilasi singleton le wọle nipasẹ ohun elo naa.
Singleton jẹ ẹya kan. Nigba lilo ẹya yii, a n sọfun ohun elo naa pe eyikeyi kilasi ti o kọja bi paramita ninu app yẹ ki o ni apẹẹrẹ kan nikan ni gbogbo ohun elo naa. Eyi tumọ si pe MyClass yoo jẹ ipinnu ni ẹẹkan ati pe yoo ni apẹẹrẹ kan ṣoṣo, eyiti o le wọle si nipa lilo oniyipada my_class.
Ọna bata () gba ọ laaye lati wọle si gbogbo awọn iṣẹ ti a forukọsilẹ tẹlẹ nipa lilo ọna iforukọsilẹ. Lẹhinna o le ṣafikun gbogbo iṣẹ naa sinu ohun elo rẹ ni lilo ọna yii.
Nlọ pada si apẹẹrẹ ti tẹlẹ, jẹ ki a yọ ọna naa kuro register()
ati laarin boot()
ṣafikun koodu itọsọna Blade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Miiran apẹẹrẹ ti ViewServiceProvider
iyi View Composers
, eyi ni snippet lati aaye Laravel osise :
use App\View\Composers\ProfileComposer;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
public function boot()
{
// Using class based composers...
View::composer('profile', ProfileComposer::class);
// Using closure based composers...
View::composer('dashboard', function ($view) {
//
});
}
}
Lati ṣiṣẹ, olupese tuntun gbọdọ wa ni afikun/forukọsilẹ si akojọpọ olupese 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,
],
];
Ercole Palmeri
O tun le nifẹ ninu:
Ni ọjọ Aarọ to kọja, Awọn akoko Iṣowo kede adehun kan pẹlu OpenAI. FT ṣe iwe-aṣẹ iwe-akọọlẹ agbaye rẹ…
Awọn miliọnu eniyan sanwo fun awọn iṣẹ ṣiṣanwọle, san awọn idiyele ṣiṣe alabapin oṣooṣu. O jẹ ero ti o wọpọ pe o…
Coveware nipasẹ Veeam yoo tẹsiwaju lati pese awọn iṣẹ esi iṣẹlẹ ikọlu cyber. Coveware yoo funni ni awọn oniwadi ati awọn agbara atunṣe…
Itọju isọtẹlẹ jẹ iyipada ti eka epo & gaasi, pẹlu imotuntun ati ọna imudani si iṣakoso ọgbin.…