ʻO ia hoʻi, ua like nā mea hoʻolako lawelawe me kahi funnel kahi e ninini ai mākou i ka wahie "papa" i loko o kahi pahu i kapa ʻia ʻo "ka pahu lawelawe" o kahi mīkini i kapa ʻia ʻo Laravel.
Inā wehe mākou i ka config/app.php e ʻike mākou i kahi ʻano me ka inoa "mea hoʻolako"
'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,
.
.
.
],
ʻO kēia kekahi o nā mea lawelawe i hoʻolako pū ʻia me ka laravel, ʻo ia hoʻi nā lawelawe kumu i waiho ʻia i loko o ka pahu lawelawe.
service provider
hana ia?Inā mākou e nānā i ka palapala ma ke noi olaola , ua hoʻokō ʻia nā faila ma ka hoʻomaka:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
a kāna Middlewares
Service Providers
: maʻiʻo o kēia ʻatikalaʻO Quali service provider
Ua hoʻouka ʻia lākou?
ʻO lākou kēlā definites ma ka papa 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,
],
];
E like me kā mākou e ʻike ai, aia kahi papa inoa o service provider
ʻaʻole lehulehu ma ka waihona /vendor
, ʻaʻole pono mākou e hoʻopā a hoʻololi iā lākou. Aia ma lalo ka poʻe hoihoi iā mākou, me BroadcastServicerProvider
disabled by default, no ka mea kakaʻikahi ka hoʻohana ʻana.
Holo kēia mau mea lawelawe a pau mai luna a lalo, e hana hou ana i ka papa inoa pālua:
register()
, pono no (ma hope) hoʻokō i kekahi mea i hoʻonohonoho ʻia ma mua o ke ʻano boot()
.boot()
o na mea hoolako a pau. Eia hou, pakahi, mai luna a lalo, o ka laha 'providers'
.I Service Providers
i loko o Laravel, aia nā mea a pau i loko o ka waihona app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
ʻO lākou nā papa PHP āpau, pili kēlā me kēia me kāna kumuhana ponoʻī: App
, Auth
, Broadcasting
, Events
e Routes
. Akā hoʻokahi mea like lākou a pau: ke ala boot()
.
I loko o ia ala, hiki iā mākou ke kākau i kekahi code e pili ana i kekahi o ia mau ʻāpana: auth
, events
, route
, etc. I nā huaʻōlelo ʻē aʻe, ʻo nā mea hoʻolako lawelawe he mau papa e hoʻopaʻa inoa i kekahi mau hana honua.
Hoʻokaʻawale lākou ma ke ʻano he "mea hoʻolako" no ka mea holo mua lākou i ke ola o ka noi, no laila ua maʻalahi kekahi mea honua ma mua o ka hiki ʻana o ka palapala hoʻokō i nā Models a i ʻole Controllers.
Aia ka hapa nui o ka hana i ka RouteServiceProvider, eia ke code:
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());
});
}
}
ʻO kēia ka papa kahi i hoʻonohonoho ʻia ai nā faila route
me ka routes/web.php
e routes/api.php
hoʻokomo ʻia e ka paʻamaudefinita. E hoʻomanaʻo, aia nā hoʻonohonoho like ʻole no ka API: Endpoint prefix /api
a me ka middleware api
no nā mea a pau routes
.
Hiki iā mākou ke hoʻoponopono i ka service providers
, ʻaʻole i loko o ka waihona /vendor
. Hoʻopilikino ʻia kēia mau faila inā loaʻa iā ʻoe nā ala he nui a makemake ʻoe e hoʻokaʻawale iā lākou i nā faila kikoʻī. Hana ʻoe routes/auth.php
a kau i nā ala ma laila, a laila "hoʻohana" ʻoe i kēlā faila ma ke ʻano boot()
di RouteServiceProvider
, hoʻohui wale i ka ʻōlelo ʻekolu:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
ua nele. He laʻana maʻamau o ka hoʻohui code AppServiceProvider
, e pili ana i ka hoʻopau ʻana i ka hoʻouka ʻana ma ka Eloquent. No ka hana ʻana i kēia, pono wale ʻoe hoʻohui i ʻelua laina ma ke ano boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
E hoʻolei kēia i kahi ʻokoʻa inā ʻaʻole i hoʻouka ʻia kahi ʻano pilina.
service provider
hoʻopilikino iMa waho aʻe o nā faila muadefinites, hiki iā mākou ke hana maʻalahi i kahi hou Service Provider
, pili i nā kumuhana ʻē aʻe ma mua o kēlā mau predefipau e like me auth
/event
/routes
.
ʻO kahi hiʻohiʻona maʻamau ka hoʻonohonoho ʻike Blade
. Hiki iā mākou ke hana i kahi kuhikuhi Blade
, a laila hoʻohui i kēlā code i ke ʻano boot(
) o kekahi service provider
, me ka paʻamau AppServiceProvider
. E hana kākou i kēia manawa a ViewServiceProvider
kaawale.
Hiki iā mākou ke hana me kēia kauoha:
php artisan make:provider ViewServiceProvider
Ka mea e hooulu i ka papa pela predefiahiahi:
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()
{
//
}
}
E like me kā mākou e ʻike ai i loko, ʻelua mau ala:
ʻO ke ala kākau inoa () hiki iā mākou ke definish nā loulou i kā mākou pahu lawelawe. No ka laʻana, ma kēia code:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
ʻO $this->app he mea hoʻololi honua i ka laravel i hiki i kahi papa hoʻokahi ke komo ma o ka app.
ʻO Singleton kahi hiʻohiʻona. I ka hoʻohana ʻana i kēia hiʻohiʻona, ke haʻi aku nei mākou i ka noi ʻo kēlā me kēia papa i hoʻoholo ʻia ma ke ʻano he hoʻohālikelike i ka app pono e loaʻa i hoʻokahi manawa i ka noi holoʻokoʻa. ʻO ia hoʻi, e hoʻoholo ʻia ka MyClass i hoʻokahi manawa a loaʻa hoʻokahi wale nō laʻana, hiki ke kiʻi ʻia me ka hoʻohana ʻana i ka hoʻololi my_class.
ʻO ke ala boot () hiki iā ʻoe ke komo i nā lawelawe āpau i hoʻopaʻa inoa mua ʻia me ke ʻano hoʻopaʻa inoa. Hiki iā ʻoe ke hoʻokomo i ka lawelawe holoʻokoʻa i kāu noi me ka hoʻohana ʻana i kēia ʻano.
E hoʻi i ka laʻana mua, e wehe i ke ʻano register()
a i loko boot()
hoʻohui i ke code kuhikuhi Blade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
ʻO kekahi laʻana o ViewServiceProvider
mahalo View Composers
, eia ka snippet mai ka punaewele Laravel :
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) {
//
});
}
}
No ka holo ʻana, pono e hoʻohui ʻia kēia mea hoʻolako hou / hoʻopaʻa inoa ʻia i ka laha mea hoʻolako 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
Hiki paha iā ʻoe ke hoihoi i:
He mana hoʻokele waiwai maoli ka ʻāpana moana, kahi i hoʻokele i kahi mākeke 150 biliona ...
I ka Pōʻakahi i hala, ua hoʻolaha ka Financial Times i kahi kuʻikahi me OpenAI. Laikini ʻo FT i kāna nūpepa papa honua…
E uku ana nā miliona o ka poʻe no nā lawelawe streaming, e uku ana i nā uku kau inoa o kēlā me kēia mahina. He manaʻo maʻamau ʻoe…
E hoʻomau ʻo Coveware e Veeam i ka hoʻolako ʻana i nā lawelawe pane ʻana i ka hanana cyber extortion. E hāʻawi ʻo Coveware i nā forensics a me nā mana hoʻoponopono…