Tefito

Nga Kaituku Ratonga i Laravel: he aha ratou me pehea te whakamahi i nga Kaituku Ratonga i Laravel

Ko nga kaiwhakarato ratonga Laravel te waahi nui i timata ai te tono. Arā, ko nga ratonga Laravel matua me nga ratonga tono, nga karaehe, me o raatau whakawhirinaki ka tukuna ki roto i te ipu ratonga ma nga kaiwhakarato. 

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.

tauira

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.

A, no te i 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 tuhinga

Ko 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:

  • Ko te whitinga tuatahi e rapu ana i tetahi tikanga whiriwhiri register(), whai hua mo (te mutunga) te mahi i tetahi mea i whirihora i mua i te tikanga boot().
  • ka mahia e te whitiwhitinga tuarua te tikanga boot() o nga kaiwhakarato katoa. Ano, takitahi, runga ki raro, o te huinga 'providers'.
  • Ka mutu, i muri i te tukatuka o nga kaiwhakarato ratonga katoa, ka neke atu a Laravel ki te tarai i te ara (ara), te whakahaere i te kaiwhakahaere, te whakamahi tauira, aha atu.

Kaituku Ratonga Laravel muadefiniti

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 routeki routes/web.phproutes/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():

Panui houtanga
Kaua e ngaro nga korero tino nui mo te mahi auaha. Waitohu ki te whiwhi i a raatau ma te imeera.
// 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.

Hangaia taau ake service provider taa

I 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().

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().

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:

Panui houtanga
Kaua e ngaro nga korero tino nui mo te mahi auaha. Waitohu ki te whiwhi i a raatau ma te imeera.

Nga tuhinga o mua

Nga Hua o nga Wharangi Tae mo nga Tamariki - he ao makutu mo nga reanga katoa

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…

2 May 2024

Kei konei te heke mai: Me pehea te Ahumahi kaipuke e huri ana i te ohanga o te ao

Ko te waahanga moana he mana ohaoha pono o te ao, kua whakatere ki te maakete 150 piriona ...

1 May 2024

Ka haina nga Kaiwhakaputa me te OpenAI i nga whakaaetanga hei whakahaere i te rere o nga korero i tukatukahia e Artificial Intelligence

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…

30 Paenga-whāwhā 2024

Utu Ipurangi: Anei te pehea o nga Ratonga Rere e Utu ana koe mo ake tonu atu

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…

29 Paenga-whāwhā 2024