Giriş yapmadınız.

#1 09.05.2019 10:29:49

dodiş
Üye
Yer: Mersin
Kayıtlı: 30.10.2017
Mesajlar: 46

Laravel "invokable" nedir ?

Merhaba,
Github'da hazırlanmış api kütüphanesi buldum. Yeni bir controller oluşturmak için dökümantasyonu inceledim. Daha önce php artisan make:Controller TestController şekilde oluşturuyorduk.
Ama şimdi php artisan make:Controller TestController --invokable tarzında bir şey gördüm ve ne olduğunu anlayamadım. Yardımcı olur musunuz ?

Çevrimdışı

#2 09.05.2019 10:53:25

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Laravel "invokable" nedir ?

PHP'de __invoke() şeklinde bir sihirli yöntem var (https://www.php.net/manual/tr/language.oop5.magic.php). Bir sınıfı fonksiyon olarak çağırdığınızda bu yöntem varsa ateşlenir. Örneğin:

class Mesaj {
    public function __invoke()
   {
        echo "Merhaba Dünya";
   }
}

$mesaj = new Mesaj;
$mesaj(); // Ekrana Merhaba Dünya basar

Laravel'de invokable controller ile kastedilen, eğer bir controller sadece bir yöntem içeriyorsa __invoke kullanılarak şu şekilde kullanılabilir:

class HomeController extends Controller
{
    public function __invoke()
    {
        return view('home');
    }
}

Route::get('/','HomeController');

Invokable olmasaydı şöyle olurdu mesela:

class HomeController extends Controller
{
    public function index()
    {
        return view('home');
    }
}

Route::get('/', '[email protected]');
// ya da
Route::get('/')->uses('[email protected]');

// ya da hiç controller kullanmadan direk view çağırma (bu ekstra, üstteki ile ilgili değil, yeri gelmişken yazayım dedim)
Route::view('/', 'home');

Çevrimdışı

#3 09.05.2019 11:01:42

dodiş
Üye
Yer: Mersin
Kayıtlı: 30.10.2017
Mesajlar: 46

Yanıt: Laravel "invokable" nedir ?

Vay be! Teşekkürler Mustafa hocam bilginize hayranım smile bir nevi constructor'da denilebilir sanki

Son düzenleyen dodiş (09.05.2019 11:02:07)

Çevrimdışı

#4 09.05.2019 17:31:28

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 445

Yanıt: Laravel "invokable" nedir ?

Klasik kurucu method (construct) voiddir.Bir şey döndürmez.Bundan sebep,bir eksikliği gidermek amaçlı yapılmıştır.Sınıf başladığında doğrudan bir şey döndürmesini isteyebilirsiniz.(Tabi (new foo)() tarzı-- sonucta bir methoddur. )

Güzel bir yöntemi pipeline paketinde.

https://github.com/thephpleague/pipeline

Son düzenleyen deathisonitsway (09.05.2019 17:32:11)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#5 09.05.2019 18:30:15

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Laravel "invokable" nedir ?

deathisonitsway yazdı:

Klasik kurucu method (construct) voiddir.Bir şey döndürmez.Bundan sebep,bir eksikliği gidermek amaçlı yapılmıştır.Sınıf başladığında doğrudan bir şey döndürmesini isteyebilirsiniz.(Tabi (new foo)() tarzı-- sonucta bir methoddur. )

Güzel bir yöntemi pipeline paketinde.

https://github.com/thephpleague/pipeline

Güzel bir paket. Daha önce excel dosyasından içeri veri aktarması yaptığım bir sistemde kullanmıştım. Excel dosyasını analiz eden işlemleri sınıflara bölmüştüm: CheckDuplicate, CheckEmptyRows, CheckHeadings, FinalizeTheAnalysis gibi. thephpleague/pipeline ile de art arda işlem yaptırıyordum.

$analyzer = (new Pipeline)
    ->pipe(new CheckDuplicate)
    ->pipe(new CheckEmptyRows)
    ->pipe(new CheckHeadings)
    ->pipe(new FinalizeTheAnalysis);

$results = $analyzer->process($excelFile);

Yeni bir analiz tipi eklemem gerektiğini düşünerek yapmıştım.

Çevrimdışı

#6 09.05.2019 20:29:42

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 445

Yanıt: Laravel "invokable" nedir ?

Kesinlikle favori paketlerimden mgsmus.Senin kullandığın gibi kullanan adam parçaları birbirine aktara aktara nasıl bir sonuç kümesi çıkarılacağını bilen pro adamlardır.Güzel kod güzel developerların işidir.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

Forum alt kısmı