Articles

Bafani ba Litšebeletso ho Laravel: seo ba leng sona le mokhoa oa ho sebelisa Bafani ba Litšebeletso ho Laravel

Bafani ba litšebeletso tsa Laravel ke sebaka se bohareng moo kopo e qalisoang. Ka mantsoe a mang, lits'ebeletso tsa mantlha tsa Laravel le lits'ebeletso tsa kopo, litlelase, le litšepiso tsa tsona li beoa ka sejaneng sa lits'ebeletso ka bafani. 

Ka mantsoe a mang, bafani ba litšebeletso ba tšoana le funele eo ka eona re tšelang mafura a "class" ka tankeng e bitsoang "setshelo sa tšebeletso" sa enjene e bitsoang Laravel.

mohlala

Haeba re bula config/app.php re tla bona sehlopha se nang le lebitso "mofani"

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

Bana ke ba bang ba bafani ba litšebeletso ba fanoang hammoho le laravel, ke hore litšebeletso tsa mantlha tse kenngoeng ka har'a sets'oants'o sa lits'ebeletso.

Ha ke service provider li etsoa?

Haeba re sheba litokomane ka kopo ea lifecycle , lifaele tse latelang li tsamaisoa qalong:

  • public/index.php
  • bootstrap/app.php
  • app/Http/Kernel.php le hae Middlewares
  • Service Providers: litaba tsa sengoloa sena

E leng service provider na li imetsoe? 

Ke tsona tseo definites ka tatellano 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,
 
    ],
 
];

Joalokaha re ka bona, ho na le lethathamo la service provider eseng phatlalatsa sephuthelong /vendor, ha rea ​​lokela ho li ama kapa hona ho li fetola. Tse re khahlang li ka tlase, ka BroadcastServicerProvider e holofalitsoe ke kamehla, mohlomong hobane e sebelisoa seoelo.

Bafani bana bohle ba lits'ebeletso ba matha ho tloha holimo ho ea tlase, ba pheta lethathamo habeli:

  • Phetolelo ea pele e batla mokhoa oa boikhethelo register(), e molemo bakeng sa (qetellong) ho phethahatsa ntho e hlophisitsoeng pele ho mokhoa boot().
  • pheteletso ea bobeli e phethahatsa mokhoa boot() ea bafani bohle. Hape, ka bonngoe, holimo ho ea tlase, ea sehlopha 'providers'.
  • Qetellong, ka mor'a hore bafani bohle ba lits'ebeletso ba sebetsanoe, Laravel e fetela pele ho arola tsela (tsela), ho tsamaisa molaoli, ho sebelisa li-templates, joalo-joalo.

Bafani ba Litšebeletso Laravel peledefileha ho le joalo

I Service Providers e kenyellelitsoe ho Laravel, ke bohle ba teng foldareng app/Providers:

  • AppServiceProvider
  • AuthServiceProvider
  • BroadcastServiceProvider
  • EventServiceProvider
  • RouteServiceProvider

Kaofela ke lihlopha tsa PHP, e 'ngoe le e' ngoe e amana le sehlooho sa eona: App, Auth, Broadcasting, Events e Routes. Empa kaofela ba na le ntho e le 'ngoe e tšoanang: mokhoa boot().

Ka har'a mokhoa oo, re ka ngola khoutu efe kapa efe e amanang le efe kapa efe ea likarolo tseo: auth, events, route, joalo-joalo. Ka mantsoe a mang, Bafani ba Litšebeletso ke litlelase feela tsa ho ngolisa ts'ebetso e itseng ea lefats'e.

Ba arohane e le "bafani" hobane ba matha pele ho nako ea ts'ebetso ea ts'ebeliso, kahoo ho na le ntho ea lefats'e e loketseng mona pele script e fihla ho Models kapa Controllers.

Boholo ba ts'ebetso bo ho RouteServiceProvider, khoutu ke ena:

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());
        });
    }
}

Ena ke sehlopha seo lifaele li lokiselitsoeng ho sona routele routes/web.phproutes/api.php e kenyelelitsoe ka ho sa felengdefinita. Hlokomela hore bakeng sa API ho boetse ho na le litlhophiso tse fapaneng: Sehlomathiso sa Endpoint /api le middleware api bakeng sa bohle routes.

Re ka fetola service providers, tse sieo foldareng /vendor. Ho iketsetsa lifaele tsena ho etsoa ha u e-na le litsela tse ngata 'me u batla ho li arola ka lifaele tse itseng. Ua theha routes/auth.php ebe u beha litsela moo, ebe u "nolla" faele eo ka mokhoa boot() di RouteServiceProvider, eketsa polelo ea boraro feela:

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

AppServiceProvider ha e na letho. Mohlala o tloaelehileng oa ho eketsa khoutu AppServiceProvider, e mabapi le ho thibela botsoa loading in Eloquent . Ho etsa sena, o hloka feela eketsa mela e mmedi ka mokhoa boot():

Leselinyana la litaba tse ncha
Se ke oa fetoa ke litaba tsa bohlokoa ka ho fetisisa tsa boqapi. Ingolise ho li amohela ka lengolo-tsoibila.
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
 
public function boot()
{
    Model::preventLazyLoading(! $this->app->isProduction());
}

Sena se tla fana ka mokhelo haeba mohlala oa likamano o sa laeloe.

Theha ea hau service provider customized

Ho phaella ho lifaele tsa peledefinites, re ka theha e ncha habonolo Service Provider, e amanang le lihlooho tse ling ho feta tsa peledefiqetile joalo ka auth/event/routes.

Mohlala o tloaelehileng haholo ke sebopeho sa pono Blade. Re ka etsa taelo Blade, ebe o kenya khoutu eo ho mokhoa boot() ea efe kapa efe service provider, ho kenyelletsa le ea kamehla AppServiceProvider. Ha re theheng hona joale a ViewServiceProvider arola.

Re ka e hlahisa ka taelo ena:

php artisan make:provider ViewServiceProvider

E leng ho tla hlahisa sehlopha joalo peledefibosiu:

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

Joalokaha re bona ka hare ho na le mekhoa e 'meli:

Rejisetara() mokhoa

Register() mokhoa o re lumella ho definish lihokelo ho setshelo sa rona sa lits'ebeletso. Ka mohlala, ka khoutu e latelang:

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

$this-> app ke phetoho ea lefats'e ea laravel eo sehlopha sa singleton se ka e fihlelang ka sesebelisoa.

Singleton ke tšobotsi. Ha re sebelisa tšobotsi ena, re tsebisa kopo hore sehlopha sefe kapa sefe se fetisoang joalo ka paramente ho app se lokela ho ba le ketsahalo e le 'ngoe feela ts'ebetsong eohle. Sena se bolela hore MyClass e tla rarolloa hang 'me e tla ba le mohlala o le mong feela, o ka fihlellehang ho sebelisoa my_class variable.

Mokhoa oa ho qala ().

Mokhoa oa boot () o u lumella ho fumana litšebeletso tsohle tse ngolisitsoeng pele u sebelisa mokhoa oa ho ngolisa. Joale o ka kenyelletsa ts'ebeletso eohle ts'ebelisong ea hau u sebelisa mokhoa ona.

Ho khutlela mohlaleng o fetileng, a re tloseng mokhoa register() le ka hare boot() eketsa khoutu ea litaelo tsa Blade:

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

Mohlala o mong oa ViewServiceProvider tlhompho View Composers, khetla ke ena ho tsoa sebakeng sa semmuso sa 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) {
            //
        });
    }
}

Ho sebetsa, mofani enoa e mocha o tlameha ho eketsoa/ngolisoe ho lenane la bafani ba thepa 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

U ka boela ua thahasella:

Leselinyana la litaba tse ncha
Se ke oa fetoa ke litaba tsa bohlokoa ka ho fetisisa tsa boqapi. Ingolise ho li amohela ka lengolo-tsoibila.

Lihlooho tsa morao tjena

Khopolo e Ntle: Bandalux e hlahisa Airpure®, lesira le hloekisang moea

Sephetho sa boqapi bo sa feleng ba theknoloji le boitlamo ho tikoloho le boiketlo ba batho. Bandalux e hlahisa Airpure®, tente…

12 April 2024

Melawana ya Moralo Vs SOLID metheo, melemo le mathata

Mekhoa ea meralo ke litharollo tse ikhethileng tsa boemo bo tlase bakeng sa mathata a hlahang khafetsa moralong oa software. Mekhoa ea moralo ke…

11 April 2024

Magica, sesebelisoa sa iOS se nolofatsang bophelo ba bakhanni ho laola likoloi tsa bona

Magica ke sesebelisoa sa iPhone se etsang hore taolo ea likoloi e be bonolo hape e sebetse hantle, e thusa bakhanni ho boloka le ho boloka…

11 April 2024

Li-chate tsa Excel, hore na ke eng, mokhoa oa ho theha chate le mokhoa oa ho khetha chate e nepahetseng

Chate ea Excel ke setšoantšo se bonts'ang lintlha ho leqephe la mosebetsi la Excel.…

9 April 2024