5
(1)

Merhabalar , bu laravel türkçe dökümanda laravel yükleme kısmını işleyeceğiz ve laravel servis sağlayıcılar – laravel service providers kısmını türkçeye çevireceğim.

Servis Sağlayıcılar
Orjinal Link : https://laravel.com/docs/5.7/providers

Kaçırmadan Okuyun

Orjinal Döküman – İngilizce ve Hemen Altında Türkçesi Olacak Şekilde Sıralanmıştır.

Introduction

Service providers are the central place of all Laravel application bootstrapping. Your own application, as well as all of Laravel’s core services are bootstrapped via service providers.

But, what do we mean by “bootstrapped”? In general, we mean registering things, including registering service container bindings, event listeners, middleware, and even routes. Service providers are the central place to configure your application.

If you open the config/app.php file included with Laravel, you will see a providers array. These are all of the service provider classes that will be loaded for your application. Of course, many of these are “deferred” providers, meaning they will not be loaded on every request, but only when the services they provide are actually needed.

In this overview you will learn how to write your own service providers and register them with your Laravel application.

Tür : Orjinal Metin


Giriş

  •  Bootstrapping : Ön Yükleme / Ön Yükleme Tetikleyici / Yükleme / Tetikleme / Hazırlama / Ateşleme
  •  Bootstrap : Cihazın donanımın yeniden kurulmasından sonra (hardware reset) çalıştırılan yazılımdır. Bootstrap’ın görevi Kernel’in çalıştırılabilmesi uygun ortam hazırlamaktır.
  •  Bootstrapping : Bir girişimcinin kendi imkanlarıyla kendini fonlaması anlamına gelmektedir.

Servis sağlayıcılar tüm laravel uygulama ön yüklenme tetikleyicilerinin merkez konumudur.
Kendi uygulamanızınız yanı sıra laravel’in çekirdek servisleri servis sağlayıcılar ile tetiklenir.

Öyleyse , “Bootstrapping – Ön Yükleme Tetikleyicisi” ne anlama gelmektedir ?.
Genel anlamda kastettiğimiz şey birşeylerin kayıtlanması / işleme dahil edilmesi / register olması ,
servis konteyner bağlayıcılarının , olay dinleyicilerinin , ara katmanların ve hatta rota’ların kayıtlanarak dahil edilmesi.
Servis sağlayıcılar uygulamanızı yapılandırmak için merkez noktasıdır.

Eğer laravel ile birlikte gelen config/app.php dosyasını açarsanız , sağlayıclar isminde bir dizi değişken göreceksiniz.
Buradaki tüm servis sağlayıcı sınıfları uygulamanız için yüklenmiş olacaklar.
Tabiki de , bunların çoğu “deferred – gecikmeli / ertelenen” sağlayıcılardır , buda onların her istekte yüklenmeyecekleri anlamına gelmektedir fakat sadece gerçekten ihtiyaç duyulduklarında çalışırlar.

Bu kısa göz atma faslında , servis sağlayıcınızı geliştirip kendi laravel uygulamanıza nasıl  kaydedeğinizi öğreneceksiniz.

Tür : Çeviri


Writing Service Providers

All service providers extend the Illuminate\Support\ServiceProvider class. Most service providers contain a register and a boot method. Within the register method, you should only bind things into the service container. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register method.

The Artisan CLI can generate a new provider via the make:provider command:

php artisan make:provider RiakServiceProvider

Tür : Orjinal Metin


Servis Sağlayıcı Yazma

Tüm servis sağlayıcılar Illuminate\Support\ServiceProvider sınıfına eklenir. Pek çok servis sağlayıcı bir kayıt ve ön yükleme methodu içerir.
Kayıt methodu dahilinde sadece birşeyleri servis konteyner içerisine bağlamalısınız.Asla hiçbir olay dinleyici , rota veya diğer fonksiyonel parçalardan bir tanesini kayıt methodu içerinde kaydetmeye teşebbüs etmemelisiniz.

HEMEN OKUYUN ! :  Laravel Servis Konteyner - Laravel Türkçe Döküman

Artisan komut satırı arayüzü make:provider komutu ile yeni bir sağlayıcı oluşturabilir.

php artisan make:provider RiakServiceProvider

Tür : Çeviri


The Register Method

As mentioned previously, within the register method, you should only bind things into the service container. You should never attempt to register any event listeners, routes, or any other piece of functionality within the register method. Otherwise, you may accidentally use a service that is provided by a service provider which has not loaded yet.

Let’s take a look at a basic service provider. Within any of your service provider methods, you always have access to the $app property which provides access to the service container:

<?php

namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Connection::class, function ($app) {
            return new Connection(config('riak'));
        });
    }
}

This service provider only defines a register method, and uses that method to define an implementation of Riak\Connection in the service container.

Tür : Orjinal Metin


Kayıt Methodu

Bir önceki kısımda ismi geçmiş olan kayıt methodu içerisinde sadece birşeyleri servis konteyner içerisine bağlamalısınız dedik.
Asla hiçbir olay dinleyici , rota veya diğer fonksiyonel parçalardan bir tanesini kayıt methodu içerinde kaydetmeye teşebbüs etmemelisiniz.
Aksi taktirde , kazara servis sağlayıcılar tarafından sağlanan ve henüz yüklenmemiş bir servisi kullanabilirsiniz.

Hadi , basit bir servis sağlayıcıya göz atalım.Servis sağlayıcı methodlarınızın herhangi birisinin içerisinde , servis konteyner’a izin sağlayan $app özelliğine her zaman erişebilirsiniz.

<?php

namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Bağlayıcıları Konteyner de kaydet.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Connection::class, function ($app) {
            return new Connection(config('riak'));
        });
    }
}

Servis sağlayıcı sadece bir tane kayıt yöntemi tanımlar ve bu methodu Riak\Connection’un bir tanımlanmasını yapmak için kullanır.

Tür : Çeviri


The Bindings And Singleton Properties

If your service provider registers many simple bindings, you may wish to use the bindings and singletons properties instead of manually registering each container binding. When the service provider is loaded by the framework, it will automatically check for these properties and register their bindings:

<?php

namespace App\Providers;

use App\Contracts\ServerProvider;
use App\Contracts\DowntimeNotifier;
use Illuminate\Support\ServiceProvider;
use App\Services\PingdomDowntimeNotifier;
use App\Services\DigitalOceanServerProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * All of the container bindings that should be registered.
     *
     * @var array
     */
    public $bindings = [
        ServerProvider::class => DigitalOceanServerProvider::class,
    ];

    /**
     * All of the container singletons that should be registered.
     *
     * @var array
     */
    public $singletons = [
        DowntimeNotifier::class => PingdomDowntimeNotifier::class,
    ];
}

Tür : Orjinal Metin


Bağlamalar ve Tek Ton Özellikleri

Eğer servis sağlayıcınız birden fazla basit bağlama içeriyorsa , her konteyner’ı tek tek bağlamak yerine bağlamaları ve tek ton’un özelliklerini kullanmak isteyebilirsiniz.
Servis sağlayıcı yapı tarafından yüklendiğinde , otomatik olarak bu özellikleri ve onların kaydettiği bağlamaları kontrol edecektir.

<?php

namespace App\Providers;

use App\Contracts\ServerProvider;
use App\Contracts\DowntimeNotifier;
use Illuminate\Support\ServiceProvider;
use App\Services\PingdomDowntimeNotifier;
use App\Services\DigitalOceanServerProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Kaydedilmesi Gereken Tüm konteyner bağlamaları.
     *
     * @var array
     */
    public $bindings = [
        ServerProvider::class => DigitalOceanServerProvider::class,
    ];

    /**
     * Kaydedilmesi Gereken Tüm Tek Ton Konteynerleri.
     *
     * @var array
     */
    public $singletons = [
        DowntimeNotifier::class => PingdomDowntimeNotifier::class,
    ];
}

Tür : Çeviri


The Boot Method

So, what if we need to register a view composer within our service provider? This should be done within the boot method. This method is called after all other service providers have been registered, meaning you have access to all other services that have been registered by the framework:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer('view', function () {
            //
        });
    }
}

Tür : Orjinal Metin


Yükleme Methodu

Peki , ya eğer besteci’yi servis sağlayıcımız içerisinde kaydetmeye ihtiyaç uyarsak ? Bu , yükleme methodu içerisinde tamamlanmalı.
Bu method diğer bütün servis sağlayıcılar kayıt olduktan sonra çağırılır , bunun anlamı ise framework tarafından diğer tüm kaydedilen servis sağlayıcılara erişim izninizin olduğudur.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Herhangi bir uygulama servisini tetikle.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer('view', function () {
            //
        });
    }
}

Tür : Çeviri


Boot Method Dependency Injection

You may type-hint dependencies for your service provider’s boot method. The service container will automatically inject any dependencies you need:

use Illuminate\Contracts\Routing\ResponseFactory;

public function boot(ResponseFactory $response)
{
    $response->macro('caps', function ($value) {
        //
    });
}

Tür : Orjinal Metin


Yükleme Methodu Bağımlılık Enjeksiyonu

Servis sağlayıcınızın yükleme methoduna ip ucu bağımlılıkları yazabilirsiniz.Servis konteyner otomatik olarak ihtiyacınız olan tüm bağımlılıklarını enjekte edecektir.

use Illuminate\Contracts\Routing\ResponseFactory;

public function boot(ResponseFactory $response)
{
    $response->macro('caps', function ($value) {
        //
    });
}

Tür : Çeviri


Registering Providers

All service providers are registered in the config/app.php configuration file. This file contains a providers array where you can list the class names of your service providers. By default, a set of Laravel core service providers are listed in this array. These providers bootstrap the core Laravel components, such as the mailer, queue, cache, and others.

HEMEN OKUYUN ! :  Laravel Yükleme - Laravel Türkçe Döküman

To register your provider, add it to the array:

'providers' => [
    // Other Service Providers

    App\Providers\ComposerServiceProvider::class,
],

Tür : Orjinal Metin


Sağlayıcıların Kayıt Edilmesi

Tüm servis sağlayıcılar config/app.php yapılandırma dosyası içerisinde kayıtlıdır.Bu dosya bir dizi değişken halinde bulabileceğiniz sağlayıcıların sınıf isimlerinin listesini içerir.
Standart olarak , laravel çekirdek servis sağlayıcıları bu dizi değişken içerisinde listelenmiştir.
Bu sağlayıcılar laravelin çekirdek bileşenlerini ön yükler örneğin  e-posta , kuyruk , ön bellekleme ve diğerleri.

'providers' => [
    // Diğer servis sağlayıcılar

    App\Providers\ComposerServiceProvider::class,
],

Tür : Çeviri


Deferred Providers

If your provider is only registering bindings in the service container, you may choose to defer its registration until one of the registered bindings is actually needed. Deferring the loading of such a provider will improve the performance of your application, since it is not loaded from the filesystem on every request.

Laravel compiles and stores a list of all of the services supplied by deferred service providers, along with the name of its service provider class. Then, only when you attempt to resolve one of these services does Laravel load the service provider.

To defer the loading of a provider, set the defer property to true and define a providesmethod. The provides method should return the service container bindings registered by the provider:

<?php

namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Indicates if loading of the provider is deferred.
     *
     * @var bool
     */
    protected $defer = true;

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Connection::class, function ($app) {
            return new Connection($app['config']['riak']);
        });
    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides()
    {
        return [Connection::class];
    }

}

Tür : Orjinal Metin


Ertelenmiş Sağlayıcılar

Eğer servis sağlayıcınız servis konteyner’inizin içerisinde sadece bağlamaları kaydediyorsa , isteğinize göre bunu sadece gerçekten ihtiyacınız olana kadar çağırılmasını ertelemeyi seçebilirsiniz.
Böyle bir sağlayıcıyı ertelemeniz uygulama performansınızı arttıracaktır ve her istekte çağırılma durumu söz konusu olmayacaktır.

HEMEN OKUYUN ! :  Laravel Servis Konteyner - Laravel Türkçe Döküman

Laravel ertelenmiş tüm servis sağlayıcılarının bir listesinin derler ve depolar , bununla beraber onun servis sağlayıcı sınıfının da.
Daha sonra , eğer bir tanesini çözmek ve kullanmak isterseniz laravel onu yükler.

Yüklenen sağlayıcı ertelemek için , erteleme değerini doğru olarak ayarlayın ve sağlayıcı methodunu tanımlayın.
Sağlayıcı methodu sağlayıcı tarafından kaydedilmiş servis konteyner bağlayıcıları geri döndürmelidir.

<?php

namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Sağlayıcının ertelenmiş olduğunu işaret eder.
     *
     * @var bool
     */
    protected $defer = true;

    /**
     * Servis sağlayıcıyı kaydet.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Connection::class, function ($app) {
            return new Connection($app['config']['riak']);
        });
    }

    /**
     * Sağlanan servisleri sağlayıcı tarafından al.
     *
     * @return array
     */
    public function provides()
    {
        return [Connection::class];
    }

}

Tür : Çeviri

 

Beğendiniz mi ?

Tıklayarak puan verin !

Toplam puan 5 / 5. Oy sayısı : 1