Nan lòt mo, founisè sèvis yo tankou yon antonwa kote nou vide gaz "klas" nan yon tank yo rele "resipyan sèvis" nan yon motè ki rele Laravel.
Si nou louvri config/app.php nou pral wè yon etalaj ak non "founisè a"
'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,
.
.
.
],
Sa yo se kèk nan founisè sèvis yo bay ansanm ak laravel, sa vle di sèvis debaz yo mete nan veso sèvis la.
service provider
yo fèt?Si nou gade dokiman an sou demann lavi , dosye sa yo yo egzekite nan kòmansman an:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
ak li Middlewares
Service Providers
: kontni atik sa aKi service provider
yo chaje?
Yo se sa yo definit nan etalaj la 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,
],
];
Kòm nou ka wè, gen yon lis service provider
pa piblik nan katab la /vendor
, nou pa ta dwe ni manyen ni modifye yo. Moun ki enterese nou yo anba a, avèk BroadcastServicerProvider
andikape pa default, pwobableman paske li se raman itilize.
Tout founisè sèvis sa yo kouri depi anwo jouk anba, repete lis la de fwa:
register()
, itil pou (evantyèlman) egzekite yon bagay configuré anvan metòd la boot()
.boot()
nan tout founisè yo. Ankò, youn pa youn, anwo jouk anba, nan etalaj la 'providers'
.I Service Providers
enkli nan Laravel, se tout moun ki prezan nan katab la app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
Yo tout se klas PHP, yo chak ki gen rapò ak pwòp sijè pa yo: App
, Auth
, Broadcasting
, Events
e Routes
. Men, yo tout gen yon bagay an komen: metòd boot()
.
Anndan metòd sa a, nou ka ekri nenpòt kòd ki gen rapò ak nenpòt nan seksyon sa yo: auth
, events
, route
, elatriye. Nan lòt mo, Founisè Sèvis yo se jis klas pou anrejistre kèk fonksyonalite mondyal.
Yo separe kòm "founisè" paske yo kouri byen bonè nan sik lavi aplikasyon an, kidonk yon bagay global bon isit la anvan script egzekite a rive nan Modèl oswa Kontwolè.
Pifò nan fonksyonalite a se nan RouteServiceProvider la, isit la se kòd la:
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());
});
}
}
Sa a se klas la kote dosye yo konfigirasyon route
, Ak routes/web.php
e routes/api.php
enkli pa defaultdefinita. Remake byen ke pou API a gen tou konfigirasyon diferan: Prefiks Endpoint /api
ak middleware api
pou tout routes
.
Nou ka edite la service providers
, ki pa nan katab la /vendor
. Pèsonalizasyon dosye sa yo fè lè ou gen anpil chemen epi ou vle separe yo nan dosye espesifik. Ou kreye routes/auth.php
epi mete chemen yo la, Lè sa a, ou "pèmèt" fichye sa a nan metòd la boot()
di RouteServiceProvider
, jis ajoute twazyèm fraz la:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
li vid. Yon egzanp tipik nan ajoute kòd AppServiceProvider
, se sou enfimite loading parese nan Eloquent . Pou fè sa, ou jis bezwen ajoute de liy nan metòd la boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Sa a pral voye yon eksepsyon si yon modèl relasyon pa chaje.
service provider
koutimAnplis de dosye yo predefinwit, nou ka fasilman kreye yon nouvo Service Provider
, ki gen rapò ak lòt sijè pase sa yo predefifini kòm auth
/event
/routes
.
Yon egzanp jistis tipik se konfigirasyon an View Blade
. Nou ka kreye yon direktiv Blade
, epi ajoute kòd sa a nan metòd la boot(
) nan nenpòt ki service provider
, ki gen ladan default la AppServiceProvider
. Se pou kounye a kreye yon ViewServiceProvider
separe.
Nou ka jenere li ak lòd sa a:
php artisan make:provider ViewServiceProvider
Ki pral jenere klas la konsa predefinwit:
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()
{
//
}
}
Kòm nou ka wè andedan gen de metòd:
Metòd register() pèmèt nou defifini lyen ki mennen nan veso sèvis nou an. Pou egzanp, nan kòd sa a:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$this->app se yon varyab mondyal nan laravel ke yon klas singleton ka jwenn aksè atravè app a.
Singleton se yon karakteristik. Lè w ap aplike karakteristik sa a, n ap enfòme aplikasyon an ke kèlkeswa klas yo pase kòm yon paramèt nan aplikasyon an ta dwe gen sèlman yon egzanp nan aplikasyon an antye. Sa vle di ke MyClass pral rezoud yon fwa epi li pral gen yon sèl egzanp, ki ka jwenn aksè lè l sèvi avèk varyab my_class la.
Metòd boot() pèmèt ou jwenn aksè nan tout sèvis ki te deja anrejistre lè l sèvi avèk metòd enskri. Lè sa a, ou ka mete tout sèvis la nan aplikasyon w lan lè l sèvi avèk metòd sa a.
Tounen nan egzanp anvan an, ann retire metòd la register()
ak andedan boot()
ajoute kòd direktiv Blade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Yon lòt egzanp ViewServiceProvider
konsiderasyon View Composers
, Men snippet la soti nan sit ofisyèl Laravel la :
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) {
//
});
}
}
Pou kouri, nouvo founisè sa a dwe ajoute/anrejistre nan etalaj founisè a 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
Ou ka enterese tou nan:
Microsoft Excel se zouti referans pou analiz done, paske li ofri anpil karakteristik pou òganize seri done,...
Walliance, SIM ak platfòm nan mitan lidè yo nan Ewòp nan domèn nan Crowdfunding Imobilye depi 2017, anonse fini an ...
Filaman se yon kad devlopman "akselere" Laravel, ki bay plizyè konpozan plen pil. Li fèt pou senplifye pwosesis la nan...
«Mwen dwe retounen pou konplete evolisyon mwen an: mwen pral pwojte tèt mwen andedan òdinatè a epi mwen pral vin pi enèji. Yon fwa etabli nan...
Google DeepMind ap prezante yon vèsyon amelyore nan modèl entèlijans atifisyèl li yo. Nouvo modèl amelyore bay non sèlman...
Laravel, pi popilè pou sentaks elegant li yo ak karakteristik pwisan, tou bay yon fondasyon solid pou achitekti modilè. La…
Cisco ak Splunk ap ede kliyan akselere vwayaj yo nan Sant Operasyon Sekirite (SOC) nan tan kap vini an ak...
Ransomware te domine nouvèl la pou de dènye ane yo. Pifò moun konnen byen ke atak...