Arā, he rite nga kaiwhakarato ratonga ki te kohanga e ringihia ai te wahie "akomanga" ki roto i te taika e kiia nei ko te "putea ratonga" o te miihini e kiia nei ko Laravel.
Mena ka whakatuwherahia e matou te config/app.php ka kite matou i tetahi huinga me te ingoa "kaiwhakarato"
'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,
.
.
.
],
Ko enei etahi o nga kaiwhakarato ratonga e whakaratohia ana me te laravel, ara ko nga ratonga taketake ka tukuna ki roto i te ipu ratonga.
service provider
e mahia ana?Mena ka titiro tatou ki nga tuhinga i runga i te tono huringa ora , ko nga konae e whai ake nei ka mahia i te timatanga:
public/index.php
bootstrap/app.php
app/Http/Kernel.php
me tana Middlewares
Service Providers
: ihirangi o tenei tuhingaKo tehea service provider
kei te utaina?
Ko ratou era definites i roto i te huinga 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,
],
];
Ka kite tatou, he rarangi o service provider
ehara i te iwi whanui i te kōpaki /vendor
, kaua tatou e pa atu, e whakarereke ranei. Ko te hunga e pai ana ki a maatau kei raro, me BroadcastServicerProvider
kua monoa ma te taunoa, na te mea he uaua te whakamahi.
Ko enei kaiwhakarato ratonga katoa ka rere mai i runga ki raro, ka whakahoki ano i te rarangi rua:
register()
, whai hua mo (te mutunga) te mahi i tetahi mea i whirihora i mua i te tikanga boot()
.boot()
o nga kaiwhakarato katoa. Ano, takitahi, runga ki raro, o te huinga 'providers'
.I Service Providers
kei roto i a Laravel, ko era katoa kei roto i te kōpaki app/Providers
:
AppServiceProvider
AuthServiceProvider
BroadcastServiceProvider
EventServiceProvider
RouteServiceProvider
He akomanga PHP katoa, e pa ana ki a ia ake kaupapa: App
, Auth
, Broadcasting
, Events
e Routes
. Engari kotahi tonu te ahua o te katoa: tikanga boot()
.
I roto i taua tikanga, ka taea e tatou te tuhi i tetahi waehere e pa ana ki tetahi o aua waahanga: auth
, events
, route
, etc. I etahi atu kupu, he karaehe noa nga Kaituku Ratonga ki te rehita i etahi mahi o te ao.
Kua wehea ratou hei "kaiwhakarato" na te mea ka rere wawe ratou i roto i te huringa ora o te tono, no reira he mea watea ki te ao i mua i te taenga atu o te tuhinga whakahaere ki nga Tauira, ki nga Kaiwhakahaere ranei.
Ko te nuinga o nga mahi kei roto i te RouteServiceProvider, koinei te waehere:
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());
});
}
}
Koinei te akomanga e whirihorahia ai nga konae route
ki routes/web.php
e routes/api.php
whakaurua ma te taunoadefinita. Kia mahara mo te API he rereke ano nga whirihoranga: Tuhinga o mua /api
me te takawaenga api
mo te katoa routes
.
Ka taea e tatou te whakatika i te service providers
, karekau i te kōpaki /vendor
. Ko te whakarite i enei konae ka mahia ina he maha nga huarahi ka hiahia koe ki te wehe ki etahi konae motuhake. Hanga koe routes/auth.php
ka waiho nga huarahi ki reira, ka "whakahohe" koe i taua konae i roto i te tikanga boot()
di RouteServiceProvider
, tāpirihia te rerenga tuatoru:
`Route::middleware('web') // or maybe you want another middleware?
->group(base_path('routes/auth.php'));
AppServiceProvider
kua takoto kau. He tauira angamaheni o te taapiri waehere AppServiceProvider
, mo te whakakore i te uta mangere i roto i te Eloquent. Ki te mahi i tenei, me hiahia noa koe tāpirihia kia rua ngā rārangi i roto i te tikanga boot()
:
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
public function boot()
{
Model::preventLazyLoading(! $this->app->isProduction());
}
Ma tenei ka maka he tuunga ki te kore e utaina he tauira hononga.
service provider
taaI tua atu i nga konae o muadefii nga ahiahi, ka ngawari te hanga i tetahi mea hou Service Provider
, e pa ana ki etahi atu kaupapa i tua atu i era o muadefioti rite auth
/event
/routes
.
He tauira tino angamaheni ko te whirihoranga tirohanga Blade
. Ka taea e tatou te hanga i tetahi tohutohu Blade
, ka tāpirihia taua waehere ki te tikanga boot(
) o tetahi service provider
, tae atu ki te taunoa AppServiceProvider
. Me hanga he ViewServiceProvider
whakawehe.
Ka taea e tatou te whakaputa ma tenei whakahau:
php artisan make:provider ViewServiceProvider
Ko tehea ka whakaputa i te karaehe i muadefiahiahi:
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()
{
//
}
}
Ka kite tatou i roto e rua nga tikanga:
Ko te tikanga rehita() ka taea e tatou definish hononga ki to tatou ipu ratonga. Hei tauira, i roto i te waehere e whai ake nei:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$this->taupānga he taurangi ao i roto i te laravel ka taea e te akomanga kotahi te uru atu ma te taupānga.
Ko Singleton tetahi ahuatanga. I te wa e tono ana i tenei ahuatanga, kei te whakamohio atu matou ki te tono ko nga karaehe ka tukuna hei tawhā i roto i te taupānga kia kotahi noa te tauira i roto i te tono katoa. Ko te tikanga ka whakatauhia takuClass kotahi, ka kotahi noa te tauira, ka taea te uru ma te whakamahi i te taurangi my_class.
Ko te tikanga boot() ka taea e koe te uru atu ki nga ratonga katoa kua rehitatia i mua ma te whakamahi i te tikanga rehita. Ka taea e koe te whakauru i te ratonga katoa ki to tono ma te whakamahi i tenei tikanga.
Ka hoki ki te tauira o mua, me tango te tikanga register()
me roto boot()
tāpirihia te waehere tohutohu Blade:
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
Ko tetahi atu tauira o ViewServiceProvider
whakaaro View Composers
, anei te wahanga mai i te pae mana o 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) {
//
});
}
}
Hei whakahaere, me taapiri/rehita tenei kaiwhakarato hou ki te rarangi kaiwhakarato 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
Ka hiahia pea koe ki:
Ko te whakawhanake i nga pukenga motuka pai na roto i te tae ka whakarite i nga tamariki mo nga pukenga uaua ake penei i te tuhi. Ki te tae…
Ko te waahanga moana he mana ohaoha pono o te ao, kua whakatere ki te maakete 150 piriona ...
I te Mane kua hipa, i panuitia e te Financial Times tetahi mahi me OpenAI. Ka raihana a FT i tana kairipoata o te ao…
E hia miriona nga taangata e utu ana mo nga ratonga rerema, e utu ana i nga utu ohaurunga ia marama. Ko te whakaaro noa ko koe…