Ngamanye amazwi, abahlinzeki besevisi bafana nefaneli lapho sithela khona uphethiloli "wezinga" ethangini elibizwa ngokuthi "isitsha sesevisi" senjini ebizwa ngeLaravel.
Uma sivula i-config/app.php sizobona uhlu olunegama elithi "umnikezeli"
'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,
.
.
.
],
Laba abanye babahlinzeki bezinsizakalo abahlinzekwa kanye ne-laravel, okungukuthi izinsiza eziyisisekelo ezifakwa esitsheni sesevisi.
service provider
ziyenziwa?Uma sibheka imibhalo ngesicelo somjikelezo wokuphila , amafayela alandelayo asetshenziswa ekuqaleni:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
neyakhe Middlewares
Service Providers
: okuqukethwe kwalesi sihlokoYikuphi service provider
zilayishiwe?
Yibo labo definites ngokulandelana 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,
],
];
Njengoba sibona, kukhona uhlu service provider
hhayi esidlangalaleni kufolda /vendor
, akufanele sizithinte noma siziguqule. Ezisithakaselayo zingezansi, nge BroadcastServicerProvider
ikhutshazwe ngokuzenzakalelayo, mhlawumbe ngenxa yokuthi ayivami ukusetshenziswa.
Bonke laba bahlinzeki besevisi basuka phezulu baye phansi, bephinda uhlu kabili:
register()
, iwusizo (ekugcineni) ekusebenziseni okuthile okulungiselelwe ngaphambi kwendlela boot()
.boot()
kubo bonke abahlinzeki. Futhi, ngakunye, phezulu kuya phansi, kwamalungu afanayo 'providers'
.I Service Providers
kufakwe kuLaravel, bonke abakhona kufolda app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
Wonke angamakilasi e-PHP, ngalinye lihlobene nesihloko salo: App
, Auth
, Broadcasting
, Events
e Routes
. Kodwa bonke banento eyodwa abafana ngayo: indlela boot()
.
Ngaphakathi kwaleyo ndlela, singabhala noma iyiphi ikhodi ehlobene nanoma yisiphi salezo zigaba: auth
, events
, route
, njll. Ngamanye amazwi, Abahlinzeki Besevisi bangamakilasi nje okubhalisa umsebenzi othile womhlaba.
Ahlukene "njengabahlinzeki" ngenxa yokuthi asebenza ngaphambi kwesikhathi somjikelezo wokuphila wohlelo lokusebenza, ngakho-ke into ethile yomhlaba wonke ekahle lapha ngaphambi kokuthi umbhalo osayindayo ufike kumamodeli noma Izilawuli.
Iningi lemisebenzi liku-RouteServiceProvider, nansi ikhodi:
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());
});
}
}
Lesi yisigaba lapho amafayela acushwa khona route
, nge routes/web.php
e routes/api.php
kufakwe ngokuzenzakaleladefinita. Qaphela ukuthi ku-API kukhona nokucushwa okuhlukile: Isiqalo se-Endpoint /api
kanye ne-middleware api
kwabo bonke routes
.
Singahlela i service providers
, ezingekho kufolda /vendor
. Ukwenza ngendlela oyifisayo lawa mafayela kwenziwa uma unemizila eminingi futhi ufuna ukuwahlukanisa abe amafayela athile. Uyadala routes/auth.php
bese ubeka izindlela lapho, bese "unika amandla" lelo fayela ngendlela boot()
di RouteServiceProvider
, mane ungeze umusho wesithathu:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
ayinalutho. Isibonelo esijwayelekile sokwengeza ikhodi AppServiceProvider
, imayelana nokukhubaza ukulayishwa kwevila ku-Eloquent. Ukuze wenze lokhu, udinga nje engeza imigqa emibili endleleni boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Lokhu kuzokhipha okuhlukile uma imodeli yobudlelwano ingalayishiwe.
service provider
ngokwezifisoNgaphezu kwamafayela angaphambilidefinites, singakha kalula entsha Service Provider
, ezihlobene nezinye izihloko kunalezo ezanduleledefiqeda njenge auth
/event
/routes
.
Isibonelo esijwayelekile ukucushwa kokubuka Blade
. Singakha isiqondiso Blade
, bese wengeza leyo khodi endleleni boot(
) yanoma yikuphi service provider
, okuhlanganisa okumisiwe AppServiceProvider
. Manje ake sakhe a ViewServiceProvider
hlukana.
Singayikhiqiza ngalo myalo:
php artisan make:provider ViewServiceProvider
Okuzokwenza iklasi libe predefiusuku:
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()
{
//
}
}
Njengoba sibona ngaphakathi kunezindlela ezimbili:
Irejista() indlela isivumela ukuthi definish izixhumanisi ezitsheni zethu zesevisi. Isibonelo, kukhodi elandelayo:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
I-$this->app iyinguquko yomhlaba wonke ku-laravel isigaba se-singleton esingafinyelela kuso ngohlelo lokusebenza.
I-Singleton iyisici. Uma sisebenzisa lesi sici, sazisa uhlelo lokusebenza ukuthi noma isiphi isigaba esiphasiswa njengepharamitha kuhlelo lokusebenza kufanele sibe nesenzakalo esisodwa kuphela kulo lonke uhlelo lokusebenza. Lokhu kusho ukuthi i-MyClass izoxazululwa kanye futhi izoba nesenzakalo esisodwa kuphela, esingafinyelelwa kusetshenziswa i-my_class variable.
Indlela yokuqalisa () ikuvumela ukuthi ufinyelele kuzo zonke izinsiza ezibhaliswe ngaphambilini usebenzisa indlela yokubhalisa. Ungabese ufaka yonke isevisi kuhlelo lwakho lokusebenza usebenzisa le ndlela.
Ukubuyela esibonelweni sangaphambilini, ake sisuse indlela register()
nangaphakathi boot()
engeza ikhodi yokuqondisa ye-Blade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Esinye isibonelo se ViewServiceProvider
hlonipha View Composers
, nali amazwibela kusuka kusayithi elisemthethweni laseLaravel :
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) {
//
});
}
}
Ukuze iqalise, lo mhlinzeki omusha kufanele engezwe/abhaliswe kuhlelo lwabahlinzeki 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
Ungase futhi ube nentshisekelo kokuthi:
I-Coveware ye-Veeam izoqhubeka nokuhlinzeka ngezinsizakalo zokuphendula izigameko zokuntshontshwa kwe-inthanethi. I-Coveware izohlinzeka ngama-forensics kanye nekhono lokulungisa…
Ukulungiswa okuqagelayo kuguqula umkhakha kawoyela negesi, ngendlela emisha nesebenzayo yokuphatha izitshalo.…
I-CMA yase-UK ikhiphe isexwayiso mayelana nokuziphatha kwe-Big Tech emakethe yezobunhloli bokwenziwa. Lapho…
Isinqumo esithi "Case Green", esakhiwe yi-European Union ukuze kuthuthukiswe ukusebenza kahle kwamandla ezakhiwo, siphothule inqubo yaso yomthetho ngokuthi...