Ngamanye amazwi, ababoneleli ngenkonzo bafana nefuneli esigalela ngayo amafutha "eklasi" kwitanki ebizwa ngokuba "yinkonkxa yenkonzo" yenjini ebizwa ngokuba yiLaravel.
Ukuba sivula i-config/app.php siya kubona uluhlu 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,
.
.
.
],
Aba ngababoneleli-nkonzo ababonelelwa kunye nelaravel, o.k.t. iinkonzo ezisisiseko ezibekwe kwisikhongozeli senkonzo.
service provider
ziyenziwa?Ukuba sijonga amaxwebhu ngesicelo somjikelo wobomi , ezi fayile zilandelayo ziyenziwa ekuqaleni:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
kunye neyakhe Middlewares
Service Providers
: Umxholo weli nqakuI-Quali service provider
zilayishiwe?
Ngabo abo defiifakwe kuluhlu 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,
],
];
Njengoko sibona, kukho uluhlu lwe service provider
hayi esidlangalaleni kwisiqulathi seefayili /vendor
, asifanele sizichukumise okanye siziguqule. Abo banomdla kuthi bangezantsi, nge BroadcastServicerProvider
ikhubaziwe ngokungagqibekanga, mhlawumbi ngenxa yokuba ayifane isetyenziswe.
Bonke aba baboneleli-nkonzo baqhuba ukusuka phezulu ukuya ezantsi, bephinda uluhlu Kabini:
register()
, luncedo ku (ekugqibeleni) ukuphumeza into eqwalaselweyo phambi kwendlela boot()
.boot()
kubo bonke ababoneleli. Kwakhona, enye enye, phezulu ukuya ezantsi, kuluhlu 'providers'
.I Service Providers
Ibandakanyiwe kwiLaravel, ngabo bonke abakhoyo kwifolda app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
Zizo zonke iiklasi ze-PHP, nganye inxulumene nesihloko sayo: App
, Auth
, Broadcasting
, Events
e Routes
. Kodwa bonke banento enye abafana ngayo: indlela boot()
.
Ngaphakathi kwaloo ndlela, sinokubhala nayiphi na ikhowudi enxulumene naliphi na kula macandelo: auth
, events
, route
, njl. Ngamanye amazwi, abaBoneleli beNkonzo ziiklasi nje zokubhalisa umsebenzi othile wehlabathi.
Bohlukene "njengababoneleli" kuba babaleka kwangoko kakhulu kumjikelo wobomi besicelo, ke into yehlabathi ilungile apha phambi kokuba iskripthi esiphumezayo sifike kwiiModeli okanye kubalawuli.
Uninzi lomsebenzi kwi-RouteServiceProvider, nantsi ikhowudi:
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());
});
}
}
Olu ludidi apho iifayile ziqwalaselwe khona route
nge routes/web.php
e routes/api.php
ibandakanywe ngokungagqibekangadefinita. Qaphela ukuba kwi-API kukho kwakhona ulungelelwaniso olwahlukileyo: I-endpoint prefix /api
kunye ne-middleware api
yabo bonke routes
.
Singayihlela i service providers
, ezingekho kwisiqulathi seefayili /vendor
. Ukwenza ezi fayile ngokwezifiso kwenziwa xa uneendlela ezininzi kwaye ufuna ukuzahlula kwiifayile ezithile. Uyadala routes/auth.php
kwaye ubeke iindlela apho, emva koko "yenza" loo fayile kwindlela boot()
di RouteServiceProvider
, yongeza nje isivakalisi sesithathu:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
ayinamntu. Umzekelo oqhelekileyo wokongeza ikhowudi AppServiceProvider
, imalunga nokukhubaza ukulayisha ukonqena kwi-Eloquent. Ukwenza oku, kufuneka nje yongeza imigca emibini kwindlela boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Oku kuya kuphosa ngaphandle ukuba imodeli yobudlelwane ayilayishwanga.
service provider
ngentandoUkongeza kwi-predefisele zifakiwe, sinokwenza ngokulula entsha Service Provider
, ngokunxulumene nezinye izihloko kunezo zangaphambilidefiicace njenge auth
/event
/routes
.
Umzekelo oqhelekileyo kuqwalaselo lwemboniselo Blade
. Sinokuyila isikhokelo Blade
, kwaye wongeze loo khowudi kwindlela boot(
) kuyo nayiphi na service provider
, kubandakanywa nokungagqibekanga AppServiceProvider
. Masidale ngoku ViewServiceProvider
hlukana.
Sinokuyivelisa ngalo myalelo:
php artisan make:provider ViewServiceProvider
Okuza kuvelisa iklasi kwangaphambilidefiNONE
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()
{
//
}
}
Njengoko sibona ngaphakathi kukho iindlela ezimbini:
Irejista () indlela iyasivumela ukuba defivala amakhonkco kwisikhongozeli sethu senkonzo. Umzekelo, kule khowudi ilandelayo:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$ this->app is a global variable in laravel that class singleton can access through the app.
I-Singleton luphawu. Xa usebenzisa eli nqaku, sazisa isicelo ukuba nayiphi na iklasi egqithisiweyo njengeparamitha kwi-app kufuneka ibe nomzekelo omnye kwisicelo sonke. Oku kuthetha ukuba iMyClass iya kusonjululwa kube kanye kwaye iya kuba nomzekelo omnye kuphela, onokufikelelwa kusetyenziswa i-my_class variable.
Indlela yokuqalisa () ikuvumela ukuba ufikelele kuzo zonke iinkonzo ezibhalisiweyo ngaphambili usebenzisa indlela yokubhalisa. Ungabandakanya yonke inkonzo kwisicelo sakho usebenzisa le ndlela.
Ukubuyela kumzekelo wangaphambili, masisuse indlela register()
nangaphakathi boot()
yongeza ikhowudi yomyalelo weBlade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Omnye umzekelo we ViewServiceProvider
imbeko View Composers
, nasi isiqwengana ukusuka kwindawo esemthethweni yeLaravel :
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 usebenze, lo mboneleli omtsha kufuneka wongezwe/abhaliswe kuluhlu lwababoneleli 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
Usenokuba nomdla koku:
I-Coveware nguVeeam iya kuqhubeka nokubonelela ngeenkonzo zokuphendula ngeziganeko zokuxhwilwa kwe-cyber. I-Coveware iya kubonelela nge-forensics kunye nezakhono zokulungisa…
Ugcino oluqikelelweyo luguqula icandelo le-oyile negesi, ngenkqubo entsha nesebenzayo kulawulo lwemizi-mveliso.…
I-CMA yase-UK ikhuphe isilumkiso malunga nokuziphatha kweBig Tech kwimarike yobukrelekrele bokwenziwa. Pha…
Umthetho we "Green Houses", oqulunqwe yiManyano yaseYurophu ukomeleza amandla ombane kwizakhiwo, ugqibezele inkqubo yowiso mthetho nge…