Mune mamwe mazwi, vanopa masevhisi vakaita sefunnel yatinodira "class" mafuta mutangi inonzi "service container" yeinjini inonzi Laravel.
Kana tikavhura config/app.php tichaona array ine zita rekuti "provider"
'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,
.
.
.
],
Aya ndiwo mamwe evanopa masevhisi vanopihwa pamwe chete nelaravel, kureva masevhisi ekutanga anoiswa mumudziyo webasa.
service provider
dzinoitwa here?Kana tikatarisa zvinyorwa pakukumbira lifecycle , mafaera anotevera anoitwa pakutanga:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
neyake Middlewares
Service Providers
: zviri muchinyorwa chinoNdeipi service provider
dzakaremerwa here?
Ndivo avo defiyakaitwa muhurongwa 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,
],
];
Sezvatinoona, pane rondedzero ye service provider
kwete yeruzhinji muforodha /vendor
, hatifaniri kuabata kana kuashandura. Avo vanotifarira vari pazasi, vane BroadcastServicerProvider
yakaremara nekusingaperi, pamwe nekuti haiwanzo shandiswa.
Vese ava vanopa masevhisi vanomhanya kubva kumusoro kusvika pasi, vachidzokorora rondedzero kaviri:
register()
, inobatsira (pakupedzisira) kuita chimwe chinhu chakagadzirirwa pamberi penzira boot()
.boot()
yevose vanopa. Zvakare, imwe neimwe, kumusoro kusvika pasi, yehurongwa 'providers'
.I Service Providers
inosanganisirwa muLaravel, vese varipo mufolda app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
Iwo ese makirasi ePP, rimwe nerimwe rine chekuita nemusoro wenyaya: App
, Auth
, Broadcasting
, Events
e Routes
. Asi vese vane chinhu chimwe chakafanana: nzira boot()
.
Mukati meiyo nzira, tinogona kunyora chero kodhi ine chekuita nechero yezvikamu izvozvo: auth
, events
, route
, nezvimwewo. Mune mamwe mazwi, Vanopa Masevhisi vangori makirasi ekunyoresa mamwe mashandiro epasirese.
Ivo vakapatsanurwa se "vanopa" nekuti vanomhanya nekukurumidza mukushandiswa kwehupenyu hwekushandisa, saka chimwe chinhu chepasirese chiri nyore pano script risati rasvika kuModels kana Controllers.
Mazhinji ekushanda ari muRouteServiceProvider, heino kodhi:
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());
});
}
}
Iyi ndiyo kirasi iyo mafaera akagadziriswa route
ne routes/web.php
e routes/api.php
inosanganisirwa neiyo defaultdefinita. Ziva kuti kune iyo API kune zvakare akasiyana masisitimu: Endpoint prefix /api
uye middleware api
kune vose routes
.
Tinogona kugadzirisa service providers
, izvo zvisiri mufolda /vendor
. Kugadzirisa mafaera aya kunoitwa kana uine nzira dzakawanda uye uchida kuzvipatsanura kuita chaiwo mafaera. Iwe gadzira routes/auth.php
uye isa nzira ipapo, wobva wa "gonesa" iyo faira munzira boot()
di RouteServiceProvider
, ingo wedzera mutsara wechitatu:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
haina chinhu. Muenzaniso wakajairika wekuwedzera kodhi AppServiceProvider
, ndezvekudzima usimbe kurodha muEloquent . Kuti uite izvi, iwe unongoda chete wedzera mitsetse miviri mu nzira boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Izvi zvinokanda zvakasarudzika kana modhi yehukama isina kurodha.
service provider
customizedMukuwedzera kune predefinited iripo, isu tinogona nyore kugadzira imwe nyowani Service Provider
, ine chekuita nemimwe misoro kunze kweiyo yakamboitwadefizvakajeka se auth
/event
/routes
.
Muenzaniso wakajairika ndeyekugadziriswa kwekuona Blade
. Tinogona kugadzira rairo Blade
, uye wobva wawedzera iyo kodhi mune iyo nzira boot(
) chero service provider
, kusanganisira default AppServiceProvider
. Ngatitangei zvino kugadzira a ViewServiceProvider
paradzana.
Tinogona kuigadzira nemurairo uyu:
php artisan make:provider ViewServiceProvider
Izvo zvichagadzira kirasi predefimanheru:
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()
{
//
}
}
Sezvatinoona mukati mune nzira mbiri:
Iyo rejista () nzira inotibvumira kuita defibvisa zvinongedzo kumudziyo wedu webasa. Semuenzaniso, mune inotevera kodhi:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$this-> app ishanduko yepasi rose mularavel iyo kirasi yesingleton inogona kuwana kuburikidza neapp.
Singleton chinhu. Kana tichishandisa chinhu ichi, tiri kuzivisa chikumbiro kuti chero kirasi inopfuudzwa separameter muapp inofanira kungova nechiitiko chimwe chete mukushandisa kwese. Izvi zvinoreva kuti MyClass ichagadziriswa kamwe chete uye ichange iine muenzaniso mumwe chete, unogona kuwanikwa uchishandisa my_class musiyano.
Iyo boot () nzira inokubvumira kuti uwane ese masevhisi akanyoreswa kare uchishandisa nzira yekunyoresa. Iwe unogona ipapo kusanganisira yese sevhisi mukushandisa kwako uchishandisa nzira iyi.
Kudzokera kumuenzaniso wekare, ngatibvisei nzira register()
uye mukati boot()
wedzera iyo Blade yekuraira kodhi:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Mumwe muenzaniso we ViewServiceProvider
respect View Composers
, heino chidimbu kubva kune yepamutemo Laravel saiti :
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) {
//
});
}
}
Kuti umhanye, mupi mutsva uyu anofanirwa kuwedzerwa/kunyoreswa kune ari mugovera array 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
Unogonawo kufarira:
Iyo UK CMA yakapa yambiro nezvemaitiro eBig Tech mumusika wehungwaru hwekugadzira. Ikoko…
Chirevo che "Case Green", chakagadzirwa neEuropean Union kuti chiwedzere kushanda nesimba kwezvivakwa, chapedza hurongwa hwayo hwemutemo ne…
Casaleggio Associati mushumo wepagore weEcommerce muItaly wakapihwa. Chirevo chine musoro unoti "AI-Commerce: miganhu yeEcommerce neArtificial Intelligence".…
Mhedzisiro yenguva dzose yekuvandudza tekinoroji uye kuzvipira kune zvakatipoteredza uye kugara zvakanaka kwevanhu. Bandalux inopa Airpure®, tende…