Wato, masu ba da sabis kamar mazurari ne da muke zuba man “class” a cikin tanki mai suna “kwangon sabis” na injin da ake kira Laravel.
Idan muka bude config/app.php za mu ga wani tsari mai suna "mai bayarwa"
'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,
.
.
.
],
Waɗannan su ne wasu daga cikin masu ba da sabis ɗin da aka bayar tare da laravel, watau sabis na yau da kullun waɗanda aka sanya a cikin kwandon sabis.
service provider
ana yin su?Idan muka dubi takardun akan buƙatun rayuwa , ana aiwatar da waɗannan fayilolin a farkon:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
da nasa Middlewares
Service Providers
: abun cikin wannan labarinWanne service provider
an lodin su?
Waɗannan su ne definites a cikin tsararru 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,
],
];
Kamar yadda muke iya gani, akwai jerin sunayen service provider
ba jama'a a cikin babban fayil ba /vendor
, kada mu taɓa ko gyara su. Wadanda suke sha'awar mu suna ƙasa, tare da BroadcastServicerProvider
naƙasasshe ta tsohuwa, mai yiwuwa saboda ba kasafai ake amfani da shi ba.
Duk waɗannan masu ba da sabis suna gudana daga sama zuwa ƙasa, suna maimaita lissafin sau biyu:
register()
, mai amfani don (ƙarshe) aiwatar da wani abu da aka saita kafin hanyar boot()
.boot()
na duk masu samarwa. Bugu da kari, daya bayan daya, sama zuwa kasa, na tsararru 'providers'
.I Service Providers
An haɗa su a cikin Laravel, duk waɗanda ke cikin babban fayil ɗin app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
Dukkansu azuzuwan PHP ne, kowannensu yana da alaƙa da nasa batun: App
, Auth
, Broadcasting
, Events
e Routes
. Amma duk suna da abu ɗaya a cikin gama gari: hanya boot()
.
A cikin wannan hanyar, za mu iya rubuta kowace lamba da ke da alaƙa da ɗayan waɗannan sassan: auth
, events
, route
, da dai sauransu. A takaice dai, Masu Ba da Sabis ajujuwa ne kawai don yin rijistar wasu ayyukan duniya.
Sun bambanta a matsayin "masu samarwa" saboda suna aiki da wuri a cikin tsarin rayuwar aikace-aikacen, don haka wani abu na duniya ya dace a nan kafin rubutun aiwatarwa ya isa ga Model ko Masu Gudanarwa.
Yawancin ayyuka suna cikin RouteServiceProvice, ga lambar:
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());
});
}
}
Wannan shine ajin da aka tsara fayilolin route
tare da routes/web.php
e routes/api.php
hada da tsohuwadefinita. Lura cewa ga API ɗin akwai kuma saiti daban-daban: prefix na ƙarshe /api
da middleware api
ga duka routes
.
Za mu iya gyara da service providers
, waɗanda ba a cikin babban fayil ɗin /vendor
. Keɓance waɗannan fayilolin ana yin su ne lokacin da kuke da hanyoyi da yawa kuma kuna son raba su cikin takamaiman fayiloli. Ka ƙirƙira routes/auth.php
kuma sanya hanyoyin a can, sannan ku "ba da damar" wannan fayil ɗin a cikin hanyar boot()
di RouteServiceProvider
, kawai ƙara jumla ta uku:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
fanko ne. Misali na al'ada na ƙara lamba AppServiceProvider
, shine game da kashe ragge lodi a cikin Batutuwa. Don yin wannan, kuna buƙatar kawai ƙara layi biyu a cikin hanyar boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Wannan zai jefa banda idan ba a ɗora samfurin dangantaka ba.
service provider
MusammanBaya ga pre-fayil ɗindefiNites, za mu iya ƙirƙirar sabon abu cikin sauƙi Service Provider
, masu alaƙa da wasu batutuwa fiye da waɗanda suka gabatadefigama kamar auth
/event
/routes
.
Misali na yau da kullun shine tsarin duba Blade
. Za mu iya ƙirƙirar umarni Blade
, sannan ƙara wannan lambar a cikin hanyar boot(
) na kowane service provider
, gami da tsoho AppServiceProvider
. Bari yanzu ƙirƙirar a ViewServiceProvider
ware.
Za mu iya samar da shi tare da wannan umarni:
php artisan make:provider ViewServiceProvider
Wanda zai haifar da ajin haka predefinite:
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()
{
//
}
}
Kamar yadda muke iya gani a ciki akwai hanyoyi guda biyu:
Hanyar rajista () tana ba mu damar definish hanyoyin haɗi zuwa akwatin sabis ɗin mu. Misali, a cikin code mai zuwa:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$this->app shine canjin duniya a cikin laravel wanda ajin singleton zai iya shiga ta app.
Singleton sifa ce. Lokacin amfani da wannan fasalin, muna sanar da aikace-aikacen cewa duk wani aji da aka wuce a matsayin ma'auni a cikin app ya kamata ya sami misali ɗaya kawai a cikin gabaɗayan aikace-aikacen. Wannan yana nufin cewa MyClass za a warware sau ɗaya kuma zai sami misali ɗaya kawai, wanda za'a iya samun dama ga ta amfani da ma'anar my_class.
Hanyar boot() tana ba ku damar samun dama ga duk ayyukan da aka yi rajista a baya ta hanyar yin rijistar. Sannan zaku iya haɗa duk sabis ɗin a cikin aikace-aikacenku ta amfani da wannan hanyar.
Komawa ga misalin da ya gabata, bari mu cire hanyar register()
kuma a ciki boot()
ƙara lambar umarnin Blade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Wani misali na ViewServiceProvider
girmamawa View Composers
, ga snippet daga shafin Laravel na hukuma :
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) {
//
});
}
}
Don gudu, wannan sabon mai bada dole ne a ƙara/yi rijista zuwa cikin tsararrun mai badawa 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
Hakanan kuna iya sha'awar:
Coveware ta Veeam zai ci gaba da ba da sabis na amsa abin da ya faru ta hanyar intanet. Coveware zai ba da damar bincikar bincike da damar gyarawa…
Kulawa da tsinkaya yana kawo sauyi a fannin mai & iskar gas, tare da sabbin hanyoyin kula da tsirrai.…
Hukumar CMA ta Burtaniya ta ba da gargadi game da halayen Big Tech a cikin kasuwar bayanan sirri. Akwai…
Dokar "Green Houses" da Tarayyar Turai ta tsara don inganta ingantaccen makamashi na gine-gine, ta kammala aikinta na majalisar tare da…