Articles

Mpanome tolotra ao amin'ny Laravel: inona izy ireo ary ahoana ny fampiasana Mpanome tolotra ao amin'ny Laravel

Ny mpanome tolotra Laravel no toerana ivon'ny fanombohana ny fampiharana. Izany hoe, ny serivisy Laravel fototra sy ny serivisy fampiharana, ny kilasy ary ny fiankinan-dry zareo dia apetraka ao amin'ny fitoeran'ny serivisy amin'ny alàlan'ny mpamatsy. 

Raha lazaina amin'ny teny hafa, ny mpanome tolotra dia toy ny fantson-tsolika izay handatsahantsika solika "kilasy" ao anaty tankina antsoina hoe "container service" an'ny motera antsoina hoe Laravel.

ohatra

Raha manokatra config/app.php isika dia hahita array misy ny anarana hoe "mpanome"

'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,
        .
        .
        .
],

Ireto ny sasany amin'ireo mpanome tolotra omena miaraka amin'ny laravel, izany hoe tolotra fototra izay apetraka ao anaty fitoeran'ny serivisy.

Rehefa Aho service provider atao ve ireny?

Raha jerena ny antontan-taratasy amin'ny fangatahana tsingerin'ny fiainana , ireto rakitra manaraka ireto dia tanterahina amin'ny fanombohana:

  • public/index.php
  • bootstrap/app.php
  • app/Http/Kernel.php ary ny azy Middlewares
  • Service Providers: votoatin'ity lahatsoratra ity

Qual service provider misy entana ve izy ireo? 

Izy ireo dia ireo definites ao amin'ny array 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,
 
    ],
 
];

Araka ny hitantsika dia misy ny lisitry ny service provider tsy ampahibemaso ao amin'ny lahatahiry /vendor, tsy tokony hikasika na hanova azy ireo isika. Ireo izay mahaliana antsika dia eto ambany, miaraka amin'ny BroadcastServicerProvider kilemaina amin'ny alàlan'ny default, angamba satria mahalana no ampiasaina.

Ireo mpanome tolotra rehetra ireo dia mihazakazaka hatrany ambony ka hatrany ambany, mamerina ny lisitra indroa:

  • Ny famerenana voalohany dia mitady fomba azo atao register(), mahasoa amin'ny (amin'ny farany) manatanteraka zavatra voarindra alohan'ny fomba boot().
  • ny fanindroany faharoa dia manatanteraka ny fomba boot() amin'ny mpamatsy rehetra. Averina indray, tsirairay avy, ambony ka hatrany ambany, amin'ny array 'providers'.
  • Farany, rehefa vita ny fikarakarana ny mpanome tolotra rehetra dia niroso tamin'ny famakafakana ny lalana (lalana) i Laravel, ny fampandehanana ny mpanara-maso, ny fampiasana môdely, sns.

Mpanome serivisy Laravel predefitsy sarababem-bahoaka

I Service Providers tafiditra ao amin'ny Laravel, dia ireo rehetra ao amin'ny lahatahiry app/Providers:

  • AppServiceProvider
  • AuthServiceProvider
  • BroadcastServiceProvider
  • EventServiceProvider
  • RouteServiceProvider

Kilasy PHP avokoa izy ireo, samy mifandray amin'ny lohahevitra manokana: App, Auth, Broadcasting, Events e Routes. Saingy misy zavatra iray iraisan'izy rehetra: fomba boot().

Ao anatin'io fomba io, afaka manoratra fehezan-dalàna mifandraika amin'ny iray amin'ireo fizarana ireo isika: auth, events, route, sns. Raha lazaina amin'ny teny hafa, ny Mpanome serivisy dia kilasy fotsiny mba hisoratra anarana fampiasa manerantany.

Misaraka amin'ny maha "mpanome" azy ireo izy ireo satria mandeha aloha be amin'ny tsingerin'ny fiainana amin'ny fampiharana, ka misy zavatra eran-tany mety eto alohan'ny hahatongavan'ny script mpanatanteraka amin'ny Models na Controllers.

Ny ankamaroan'ny fampiasa dia ao amin'ny RouteServiceProvider, ity ny 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());
        });
    }
}

Ity no kilasy misy ny rakitra voarindra routeamin'ny routes/web.phproutes/api.php tafiditra ao amin'ny defaultdefinita. Mariho fa ho an'ny API dia misy ihany koa ny tefy hafa: Tovona Endpoint /api ary middleware api ho an'ny rehetra routes.

Afaka manova ny service providers, izay tsy ao anaty lahatahiry /vendor. Ny fanamboarana ireo rakitra ireo dia atao rehefa manana lalana maro ianao ary te hanasaraka azy ireo ho rakitra manokana. Mamorona ianao routes/auth.php ary apetraho eo ny lalana, avy eo dia "avelanao" io rakitra io amin'ny fomba boot() di RouteServiceProvider, ampio fotsiny ny fehezanteny fahatelo:

`Route::middleware('web') // or maybe you want another middleware?
    ->group(base_path('routes/auth.php'));

AppServiceProvider foana io. Ohatra mahazatra amin'ny fampidirana kaody AppServiceProvider, dia momba ny fanafoanana ny fisintahana malaina amin'ny Eloquent. Mba hanaovana izany dia mila fotsiny ianao ampio andalana roa amin'ny fomba boot():

Gazety fanavaozana
Aza adino ny vaovao manan-danja indrindra momba ny fanavaozana. Misoratra anarana handray azy ireo amin'ny mailaka.
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
 
public function boot()
{
    Model::preventLazyLoading(! $this->app->isProduction());
}

Izany dia hanipy fanavahana raha toa ka tsy feno ny modely fifandraisana.

Mamorona anao manokana service provider namboarina

Ankoatra ny rakitra mialohadefinites, afaka mamorona vaovao mora foana isika Service Provider, mifandraika amin'ny lohahevitra hafa ankoatr'ireo predefivita toy ny auth/event/routes.

Ohatra iray mahazatra dia ny fikirakirana fijery Blade. Afaka mamorona torolàlana isika Blade, ary ampidiro ao amin'ny fomba io kaody io boot() na inona na inona service provider, anisan'izany ny default AppServiceProvider. Andeha isika hamorona a ViewServiceProvider misaraka.

Afaka mamorona azy amin'ny alalan'ity baiko ity isika:

php artisan make:provider ViewServiceProvider

Izay hiteraka ny kilasy ka predefialina:

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()
    {
        //
    }
}

Araka ny hitantsika ao anatiny dia misy fomba roa:

Ny fomba fisoratana anarana ().

Ny fomba fisoratana anarana () dia mamela antsika definish rohy mankany amin'ny fitoeran'ny serivisy. Ohatra, amin'ny code manaraka:

public function register()
{
    $this->app->singleton(my_class, function($app){
        return new MyClass($app);
    });
}

$this->app dia faribolana manerantany amin'ny laravel izay azon'ny kilasy tokana idirana amin'ny alàlan'ny fampiharana.

Singleton dia singa iray. Rehefa mampihatra an'io endri-javatra io izahay dia mampahafantatra ny fampiharana fa na inona na inona kilasy alefa ho mari-pamantarana ao amin'ny app dia tokony hanana ohatra iray ihany amin'ny fampiharana iray manontolo. Midika izany fa ny MyClass dia ho voavaha indray mandeha ary tsy hanana afa-tsy ohatra iray, izay azo idirana amin'ny fampiasana ny my_class variable.

Ny fomba boot().

Ny fomba boot() dia ahafahanao miditra amin'ny serivisy rehetra voasoratra anarana taloha tamin'ny alàlan'ny fomba fisoratana anarana. Azonao atao ny mampiditra ny serivisy manontolo amin'ny fampiharana anao amin'ny fampiasana ity fomba ity.

Miverina amin'ny ohatra teo aloha, andao esorina ny fomba register() ary ao anatiny boot() ampio ny code Directive Blade:

use Illuminate\Support\Facades\Blade;
 
public function boot()
{
    Blade::directive('datetime', function ($expression) {
        return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
    });
}

Ohatra iray hafa amin'ny ViewServiceProvider mijery View Composers, ity ny sombiny avy amin'ny tranokala ofisialy 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) {
            //
        });
    }
}

Mba hampandehanana dia tsy maintsy ampiana/misoratra anarana amin'ny laharan'ny mpamatsy ity mpamatsy vaovao ity 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

Mety ho liana amin'ny:

Gazety fanavaozana
Aza adino ny vaovao manan-danja indrindra momba ny fanavaozana. Misoratra anarana handray azy ireo amin'ny mailaka.

Lahatsoratra vao haingana

Ny Mpanonta sy ny OpenAI dia manao sonia fifanarahana mba hifehy ny fikorianan'ny vaovao karakarain'ny Artificial Intelligence

Ny alatsinainy lasa teo, nanambara fifanarahana tamin'ny OpenAI ny Financial Times. Ny FT dia manome alalana ny asa fanaovan-gazety manerantany…

30 Aprily 2024

Fandoavam-bola amin'ny Internet: Ity no fomba handoavanao ny serivisy streaming

Olona an-tapitrisany no mandoa serivisy streaming, mandoa saram-pamandrihana isam-bolana. Hevitra mahazatra fa ianao…

29 Aprily 2024

Veeam dia manasongadina ny fanohanana feno indrindra ho an'ny ransomware, manomboka amin'ny fiarovana ka hatramin'ny famaliana sy ny fanarenana

Ny Coveware avy amin'i Veeam dia hanohy hanome tolotra famaliana trangan-javatra an-tserasera. Ny Coveware dia hanolotra fahaiza-manao forensika sy fanavaozana…

23 Aprily 2024

Revolisiona Maitso sy Nomerika: Ahoana no fiovan'ny Fikojakojana mialoha ny indostrian'ny solika sy ny entona

Ny fikojakojana mialoha dia manova ny sehatry ny solika sy entona, miaraka amin'ny fomba fiasa vaovao sy mavitrika amin'ny fitantanana orinasa.…

22 Aprily 2024