ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಸೇವಾ ಪೂರೈಕೆದಾರರು ಒಂದು ಕೊಳವೆಯಂತಿದ್ದಾರೆ, ಅದರ ಮೂಲಕ ನಾವು "ವರ್ಗ" ಇಂಧನವನ್ನು ಲಾರಾವೆಲ್ ಎಂಬ ಎಂಜಿನ್ನ "ಸೇವಾ ಕಂಟೇನರ್" ಎಂಬ ಟ್ಯಾಂಕ್ಗೆ ಸುರಿಯುತ್ತೇವೆ.
ನಾವು 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'
.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.php
e routes/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
ಕಸ್ಟಮೈಸ್ಪೂರ್ವ ಫೈಲ್ಗಳ ಜೊತೆಗೆdefiನೈಟ್ಸ್, ನಾವು ಸುಲಭವಾಗಿ ಹೊಸದನ್ನು ರಚಿಸಬಹುದು 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ನಮ್ಮ ಸೇವಾ ಕಂಟೇನರ್ಗೆ ನಿಶ್ ಲಿಂಕ್ಗಳು. ಉದಾಹರಣೆಗೆ, ಈ ಕೆಳಗಿನ ಕೋಡ್ನಲ್ಲಿ:
public function register()
{
$this->app->singleton(my_class, function($app){
return new MyClass($app);
});
}
$this->ಅಪ್ಲಿಕೇಶನ್ ಲಾರಾವೆಲ್ನಲ್ಲಿ ಜಾಗತಿಕ ವೇರಿಯಬಲ್ ಆಗಿದ್ದು, ಸಿಂಗಲ್ಟನ್ ವರ್ಗವು ಅಪ್ಲಿಕೇಶನ್ ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದು.
ಸಿಂಗಲ್ಟನ್ ಒಂದು ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಅನ್ವಯಿಸುವಾಗ, ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಪ್ಯಾರಾಮೀಟರ್ನಂತೆ ಯಾವುದೇ ತರಗತಿಯನ್ನು ರವಾನಿಸಲಾಗಿದೆಯೋ ಅದು ಇಡೀ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಕೇವಲ ಒಂದು ನಿದರ್ಶನವನ್ನು ಮಾತ್ರ ಹೊಂದಿರಬೇಕು ಎಂದು ನಾವು ಅಪ್ಲಿಕೇಶನ್ಗೆ ತಿಳಿಸುತ್ತಿದ್ದೇವೆ. ಇದರರ್ಥ MyClass ಅನ್ನು ಒಮ್ಮೆ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕೇವಲ ಒಂದು ನಿದರ್ಶನವನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇದನ್ನು my_class ವೇರಿಯೇಬಲ್ ಬಳಸಿ ಪ್ರವೇಶಿಸಬಹುದು.
ಬೂಟ್ () ವಿಧಾನವು ರಿಜಿಸ್ಟರ್ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಹಿಂದೆ ನೋಂದಾಯಿಸಿದ ಎಲ್ಲಾ ಸೇವೆಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ನೀವು ಸಂಪೂರ್ಣ ಸೇವೆಯನ್ನು ಸೇರಿಸಿಕೊಳ್ಳಬಹುದು.
ಹಿಂದಿನ ಉದಾಹರಣೆಗೆ ಹಿಂತಿರುಗಿ, ವಿಧಾನವನ್ನು ತೆಗೆದುಹಾಕೋಣ 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
ನೀವು ಸಹ ಆಸಕ್ತಿ ಹೊಂದಿರಬಹುದು:
ನೌಕಾ ವಲಯವು ನಿಜವಾದ ಜಾಗತಿಕ ಆರ್ಥಿಕ ಶಕ್ತಿಯಾಗಿದೆ, ಇದು 150 ಶತಕೋಟಿ ಮಾರುಕಟ್ಟೆಯತ್ತ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿದೆ...
ಕಳೆದ ಸೋಮವಾರ, ಫೈನಾನ್ಶಿಯಲ್ ಟೈಮ್ಸ್ ಓಪನ್ ಎಐ ಜೊತೆ ಒಪ್ಪಂದವನ್ನು ಪ್ರಕಟಿಸಿತು. FT ತನ್ನ ವಿಶ್ವ ದರ್ಜೆಯ ಪತ್ರಿಕೋದ್ಯಮಕ್ಕೆ ಪರವಾನಗಿ ನೀಡುತ್ತದೆ…
ಲಕ್ಷಾಂತರ ಜನರು ಸ್ಟ್ರೀಮಿಂಗ್ ಸೇವೆಗಳಿಗೆ ಪಾವತಿಸುತ್ತಾರೆ, ಮಾಸಿಕ ಚಂದಾದಾರಿಕೆ ಶುಲ್ಕವನ್ನು ಪಾವತಿಸುತ್ತಾರೆ. ನೀವು ಎಂಬುದು ಸಾಮಾನ್ಯ ಅಭಿಪ್ರಾಯ…
Veeam ನಿಂದ Coveware ಸೈಬರ್ ಸುಲಿಗೆ ಘಟನೆಯ ಪ್ರತಿಕ್ರಿಯೆ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ. ಕೋವ್ವೇರ್ ಫೋರೆನ್ಸಿಕ್ಸ್ ಮತ್ತು ಪರಿಹಾರ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೀಡುತ್ತದೆ…