பொருட்கள்

Laravel இல் சேவை வழங்குநர்கள்: அவர்கள் என்ன மற்றும் Laravel இல் சேவை வழங்குநர்களை எவ்வாறு பயன்படுத்துவது

Laravel சேவை வழங்குநர்கள் பயன்பாடு தொடங்கப்படும் மைய இடமாகும். அதாவது, லாராவெல் கோர் சேவைகள் மற்றும் பயன்பாட்டு சேவைகள், வகுப்புகள் மற்றும் அவற்றின் சார்புகள் வழங்குநர்கள் வழியாக சேவை கொள்கலனுக்குள் தள்ளப்படுகின்றன. 

வேறு வார்த்தைகளில் கூறுவதானால், சேவை வழங்குநர்கள் ஒரு புனல் போன்றவர்கள், இதன் மூலம் லாராவெல் என்ற இயந்திரத்தின் "சேவை கொள்கலன்" எனப்படும் தொட்டியில் "வகுப்பு" எரிபொருளை ஊற்றுகிறோம்.

உதாரணமாக

நாம் config/app.php ஐத் திறந்தால், "வழங்குபவர்" என்ற பெயரில் ஒரு வரிசையைக் காண்போம்.

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

இவை சில சேவை வழங்குநர்கள் லாரவெலுடன் வழங்கப்படுகின்றன, அதாவது சேவை கொள்கலனில் வைக்கப்படும் அடிப்படை சேவைகள்.

எப்பொழுது நான் service provider அவை நிகழ்த்தப்படுகின்றனவா?

ஆவணங்களைப் பார்த்தால் கோரிக்கை வாழ்க்கை சுழற்சி , பின்வரும் கோப்புகள் தொடக்கத்தில் செயல்படுத்தப்படுகின்றன:

  • public/index.php
  • bootstrap/app.php
  • app/Http/Kernel.php மற்றும் அவரது Middlewares
  • Service Providers: இந்த கட்டுரையின் உள்ளடக்கம்

குவாலி service provider அவை ஏற்றப்பட்டதா? 

அவர்கள் தான் defiவரிசையில் நைட்ஸ் 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,
 
    ],
 
];

நாம் பார்க்க முடியும் என, ஒரு பட்டியல் உள்ளது service provider கோப்புறையில் பொது இல்லை /vendor, அவற்றை நாம் தொடவோ மாற்றவோ கூடாது. எங்களுக்கு ஆர்வமுள்ளவர்கள் கீழே, உடன் BroadcastServicerProvider இயல்பாகவே முடக்கப்பட்டது, ஒருவேளை இது அரிதாகவே பயன்படுத்தப்படுவதால்.

இந்த சேவை வழங்குநர்கள் அனைவரும் மேலிருந்து கீழாக இயங்கி, பட்டியலை மீண்டும் செய்கிறார்கள் இரண்டு முறை:

  • முதல் மறு செய்கை ஒரு விருப்ப முறையைத் தேடுகிறது register(), முறைக்கு முன் உள்ளமைக்கப்பட்ட ஒன்றை (இறுதியில்) செயல்படுத்துவதற்கு பயனுள்ளதாக இருக்கும் boot().
  • இரண்டாவது மறு செய்கை முறையை செயல்படுத்துகிறது boot() அனைத்து வழங்குநர்களின். மீண்டும், வரிசையின் மேலிருந்து கீழாக ஒவ்வொன்றாக 'providers'.
  • இறுதியாக, அனைத்து சேவை வழங்குநர்களும் செயலாக்கப்பட்ட பிறகு, லாராவெல் பாதையை (பாதையை) பாகுபடுத்துதல், கட்டுப்படுத்தியை இயக்குதல், டெம்ப்ளேட்களைப் பயன்படுத்துதல் போன்றவற்றுக்கு நகர்கிறது.

சேவை வழங்குநர்கள் Laravel முன்definiti

I Service Providers Laravel இல் சேர்க்கப்பட்டுள்ளது, அவை அனைத்தும் கோப்புறையில் உள்ளன app/Providers:

  • AppServiceProvider
  • AuthServiceProvider
  • BroadcastServiceProvider
  • EventServiceProvider
  • RouteServiceProvider

அவை அனைத்தும் PHP வகுப்புகள், ஒவ்வொன்றும் அதன் சொந்த தலைப்புடன் தொடர்புடையவை: App, Auth, Broadcasting, Events e Routes. ஆனால் அவை அனைத்திற்கும் பொதுவான ஒன்று உள்ளது: முறை boot().

அந்த முறையின் உள்ளே, அந்த பிரிவுகளில் ஏதேனும் ஒன்றுடன் தொடர்புடைய எந்த குறியீட்டையும் எழுதலாம்: auth, events, route, முதலியன வேறு வார்த்தைகளில் கூறுவதானால், சேவை வழங்குநர்கள் சில உலகளாவிய செயல்பாடுகளை பதிவு செய்வதற்கான வகுப்புகள் மட்டுமே.

அவை "வழங்குபவர்கள்" என்று தனித்தனியாக உள்ளன, ஏனெனில் அவை பயன்பாட்டு வாழ்க்கைச் சுழற்சியில் மிக விரைவாக இயங்குகின்றன, எனவே செயல்படுத்தும் ஸ்கிரிப்ட் மாதிரிகள் அல்லது கன்ட்ரோலர்களுக்குச் செல்வதற்கு முன், உலகளாவிய ஏதோ ஒன்று இங்கே வசதியானது.

பெரும்பாலான செயல்பாடுகள் RouteServiceProvider இல் உள்ளன, இங்கே குறியீடு உள்ளது:

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

கோப்புகள் கட்டமைக்கப்பட்ட வகுப்பு இது route, உடன் routes/web.phproutes/api.php இயல்பாக சேர்க்கப்பட்டுள்ளதுdefiநிதா. APIக்கு வெவ்வேறு உள்ளமைவுகளும் உள்ளன என்பதை நினைவில் கொள்ளவும்: எண்ட்பாயிண்ட் முன்னொட்டு /api மற்றும் மிடில்வேர் api அனைவருக்கும் routes.

நாம் திருத்த முடியும் service providers, கோப்புறையில் இல்லாதவை /vendor. இந்த கோப்புகளை தனிப்பயனாக்குவது, உங்களிடம் பல பாதைகள் இருக்கும்போது அவற்றை குறிப்பிட்ட கோப்புகளாக பிரிக்க வேண்டும். நீங்கள் உருவாக்குங்கள் routes/auth.php மற்றும் பாதைகளை அங்கு வைத்து, நீங்கள் அந்த கோப்பினை "இயக்க" செய்கிறீர்கள் boot() di RouteServiceProvider, மூன்றாவது வாக்கியத்தைச் சேர்க்கவும்:

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

AppServiceProvider இது காலியாக உள்ளது. குறியீட்டைச் சேர்ப்பதற்கான பொதுவான எடுத்துக்காட்டு AppServiceProvider, எலோக்வெண்டில் சோம்பேறி ஏற்றுதலை முடக்குவது பற்றியது. இதைச் செய்ய, உங்களுக்குத் தேவை இரண்டு வரிகளைச் சேர்க்கவும் முறையில் boot():

புதுமை செய்திமடல்
புதுமை பற்றிய மிக முக்கியமான செய்திகளைத் தவறவிடாதீர்கள். மின்னஞ்சல் மூலம் அவற்றைப் பெற பதிவு செய்யவும்.
// app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model;
 
public function boot()
{
    Model::preventLazyLoading(! $this->app->isProduction());
}

ஒரு உறவு மாதிரி ஏற்றப்படாவிட்டால் இது விதிவிலக்கு அளிக்கும்.

உங்கள் சொந்த உருவாக்க service provider தனிப்பயனாக்கப்பட்ட

முன் கோப்புகளுக்கு கூடுதலாகdefinites, நாம் எளிதாக புதிய ஒன்றை உருவாக்க முடியும் Service Provider, முந்தைய தலைப்புகளைத் தவிர மற்ற தலைப்புகளுடன் தொடர்புடையதுdefiஎன முடிந்தது auth/event/routes.

ஒரு பொதுவான உதாரணம் பார்வை உள்ளமைவு ஆகும் Blade. நாம் ஒரு கட்டளையை உருவாக்க முடியும் Blade, பின்னர் அந்த குறியீட்டை முறைக்குள் சேர்க்கவும் boot() ஏதேனும் service provider, இயல்புநிலை உட்பட AppServiceProvider. இப்போது ஒரு உருவாக்குவோம் ViewServiceProvider தனி.

இந்த கட்டளையுடன் நாம் அதை உருவாக்கலாம்:

php artisan make:provider ViewServiceProvider

இது வகுப்பை முன்கூட்டியே உருவாக்கும்defiஇரவு:

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

நாம் உள்ளே பார்க்க முடியும் என இரண்டு முறைகள் உள்ளன:

பதிவு() முறை

பதிவு() முறை நம்மை அனுமதிக்கிறது defiஎங்கள் சேவை கொள்கலனுக்கான nish இணைப்புகள். எடுத்துக்காட்டாக, பின்வரும் குறியீட்டில்:

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

$this->பயன்பாடு என்பது லாராவெலில் உள்ள உலகளாவிய மாறியாகும், இதை ஒரு சிங்கிள்டன் வகுப்பு பயன்பாட்டின் மூலம் அணுக முடியும்.

சிங்கிள்டன் ஒரு அம்சம். இந்த அம்சத்தைப் பயன்படுத்தும்போது, ​​பயன்பாட்டில் எந்த வகுப்பில் ஒரு அளவுருவாக தேர்ச்சி பெற்றாலும், அது முழுப் பயன்பாட்டில் ஒரு நிகழ்வை மட்டுமே கொண்டிருக்க வேண்டும் என்பதை பயன்பாட்டிற்குத் தெரிவிக்கிறோம். இதன் பொருள் MyClass ஒருமுறை தீர்க்கப்படும் மற்றும் ஒரே ஒரு நிகழ்வைக் கொண்டிருக்கும், இதை my_class மாறியைப் பயன்படுத்தி அணுகலாம்.

துவக்க () முறை

boot() முறையானது, பதிவு முறையைப் பயன்படுத்தி முன்னர் பதிவுசெய்யப்பட்ட அனைத்து சேவைகளையும் அணுக உங்களை அனுமதிக்கிறது. இந்த முறையைப் பயன்படுத்தி உங்கள் பயன்பாட்டில் முழு சேவையையும் சேர்க்கலாம்.

முந்தைய உதாரணத்திற்குச் சென்று, முறையை அகற்றுவோம் register() மற்றும் உள்ளே boot() பிளேட் கட்டளைக் குறியீட்டைச் சேர்க்கவும்:

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

மற்றொரு உதாரணம் ViewServiceProvider தொடர்பாக View Composers, இதோ துணுக்கு அதிகாரப்பூர்வ 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) {
            //
        });
    }
}

இயக்க, இந்த புதிய வழங்குநரை இன் வழங்குநர் வரிசையில் சேர்க்க வேண்டும்/பதிவு செய்ய வேண்டும் 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

நீங்கள் இதில் ஆர்வமாக இருக்கலாம்:

புதுமை செய்திமடல்
புதுமை பற்றிய மிக முக்கியமான செய்திகளைத் தவறவிடாதீர்கள். மின்னஞ்சல் மூலம் அவற்றைப் பெற பதிவு செய்யவும்.

சமீபத்திய கட்டுரைகள்

குழந்தைகளுக்கான வண்ணப் பக்கங்களின் நன்மைகள் - எல்லா வயதினருக்கும் மாய உலகம்

வண்ணம் தீட்டுவதன் மூலம் சிறந்த மோட்டார் திறன்களை வளர்ப்பது, எழுதுவது போன்ற சிக்கலான திறன்களுக்கு குழந்தைகளை தயார்படுத்துகிறது. வண்ணம் தீட்ட…

29 மே 29

எதிர்காலம் இங்கே உள்ளது: கப்பல் துறை எவ்வாறு உலகப் பொருளாதாரத்தில் புரட்சியை ஏற்படுத்துகிறது

கடற்படைத் துறை ஒரு உண்மையான உலகளாவிய பொருளாதார சக்தியாகும், இது 150 பில்லியன் சந்தையை நோக்கி பயணித்துள்ளது...

29 மே 29

செயற்கை நுண்ணறிவு மூலம் செயலாக்கப்படும் தகவல்களின் ஓட்டத்தை ஒழுங்குபடுத்த வெளியீட்டாளர்கள் மற்றும் OpenAI ஒப்பந்தங்களில் கையெழுத்திடுகின்றனர்

கடந்த திங்கட்கிழமை, பைனான்சியல் டைம்ஸ் OpenAI உடன் ஒரு ஒப்பந்தத்தை அறிவித்தது. FT அதன் உலகத் தரம் வாய்ந்த பத்திரிகைக்கு உரிமம் அளிக்கிறது…

ஏப்ரல் 29 ஏப்ரல்

ஆன்லைன் கொடுப்பனவுகள்: ஸ்ட்ரீமிங் சேவைகள் உங்களை எப்படி எப்போதும் செலுத்த வைக்கின்றன என்பது இங்கே

மில்லியன் கணக்கான மக்கள் ஸ்ட்ரீமிங் சேவைகளுக்கு பணம் செலுத்துகிறார்கள், மாதாந்திர சந்தா கட்டணத்தை செலுத்துகிறார்கள். நீங்கள் என்பது பொதுவான கருத்து...

ஏப்ரல் 29 ஏப்ரல்

உங்கள் மொழியில் புதுமையைப் படியுங்கள்

புதுமை செய்திமடல்
புதுமை பற்றிய மிக முக்கியமான செய்திகளைத் தவறவிடாதீர்கள். மின்னஞ்சல் மூலம் அவற்றைப் பெற பதிவு செய்யவும்.

எங்களுக்கு பின்பற்றவும்

சமீபத்திய கட்டுரைகள்

இணைப்பு

ஜீவனாம்சம் சைபர் தாக்குதல் blockchain chatbot அரட்டை gpt மேகம் கிளவுட் கம்ப்யூட்டிங் உள்ளடக்க சந்தைப்படுத்தல் சைபர் தாக்குதல் இணைய பாதுகாப்பு நுகர்வோர் உரிமை இணையவழி எனியா புதுமை நிகழ்வு gianfranco fedele Google செல்வாக்கு கண்டுபிடிப்பு புதுமைக்கு நிதியளித்தல் அதிகரிக்கும் கண்டுபிடிப்பு மருத்துவ கண்டுபிடிப்பு புதுமை நிலைத்தன்மை தொழில்நுட்ப கண்டுபிடிப்பு செயற்கை நுண்ணறிவு சனத்தொகை எந்திர கற்றல் metaverse மைக்ரோசாப்ட் nft சுழலில் மனிதர் இல்லை PHP பதில் ரோபாட்டிக்ஸ் எஸ்சிஓ ஸெர்ப் மென்பொருள் மென்பொருள் வடிவமைப்பு மென்பொருள் மேம்பாடு மென்பொருள் பொறியியல் பேண்தகைமை தொடக்க தேல்ஸ் பயிற்சி VPN web3