Laravel'de Artisan Command Oluşturma ve Kullanma

"Laravel'de Artisan Command Oluşturma ve Kullanma"

Laravel, Artisan komut satırı arayüzü sayesinde bir projeyi yönetmek için birçok kullanışlı araç sunar. Kendi özel komutlarınızı oluşturup proje işleyişini kolaylaştırabilirsiniz. Bu rehberde Laravel'de nasıl özel bir Artisan komutu oluşturacağınızı ve kullanacağınızı detaylıca açıklıyoruz.


1. Artisan Command Nedir?

Artisan komutları, Laravel projelerinde tekrarlayan görevleri otomatikleştirmek ve verimliliği artırmak için kullanılan özelleştirilebilir komutlardır. Örneğin:

  • Veri tabanı işlemleri
  • Dosya oluşturma veya düzenleme
  • Arka plan işlerini tetikleme

Laravel, Artisan komutları için esnek bir yapı sunar.


2. Yeni Bir Komut Oluşturma

Yeni bir komut oluşturmak için make:command Artisan komutunu kullanabilirsiniz:

php artisan make:command KomutAdı

Bu komut, app/Console/Commands dizininde GenerateBladeCSS.php adında bir dosya oluşturur.

3. Komut Dosyasını Düzenleme

Yeni oluşturulan komut dosyasını açın:

// app/Console/Commands/GenerateBladeCSS.php

Dosyanın temel yapısı şu şekilde olacaktır:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class GenerateBladeCSS extends Command
{
    // Komutun konsolda nasıl çağrılacağını tanımlayın
    protected $signature = 'generate:blade-css';

    // Komutun açıklaması
    protected $description = 'Generate CSS files for each Blade view based on used classes';

    public function __construct()
    {
        parent::__construct();
    }

    // Komut çalıştırıldığında yapılacak işlemler
    public function handle()
    {
        $this->info('GenerateBladeCSS komutu çalıştırıldı!');

        // Burada komutun ana işlemlerini gerçekleştirin
    }
}

4. Komutun Yapı Taşları

4.1. $signature: Komutun Tanımı

Komutun terminalde nasıl çağrılacağını belirler. Örnek:

protected $signature = 'generate:blade-css';

Ayrıca, komutunuza parametreler ve seçenekler ekleyebilirsiniz:

  • Zorunlu Parametre: generate:blade-css {parametre}
  • Opsiyonel Parametre: generate:blade-css {parametre?}
  • Seçenekler: generate:blade-css {--force}

Örnek:

protected $signature = 'generate:blade-css {bladeFile?} {--minify}';

Bu tanımda:

  • bladeFile: Tek bir Blade dosyasını işlemek için parametre
  • --minify: CSS'yi sıkıştırmak için bir seçenek

4.2. $description: Komut Açıklaması

Kısa bir açıklama, php artisan list komutuyla görüntülenir.

protected $description = 'Generate CSS files for each Blade view';

4.3. handle: Komutun İşlem Mantığı

Komutun çalıştırıldığında ne yapacağını tanımlar. Örneğin, Blade dosyalarını tarayabilir ve CSS oluşturabilirsiniz.


5. Komutun Kayıt Edilmesi

Oluşturduğunuz komutun Laravel tarafından tanınması için App\Console\Kernel sınıfına kaydedilmesi gerekir.

Aşağıdaki dosyayı açın:

// app/Console/Kernel.php

$commands dizisine komutunuzu ekleyin:

protected $commands = [
    \App\Console\Commands\GenerateBladeCSS::class,
];

6. Komutu Çalıştırmak

Komutunuzu çalıştırmak için terminale şu komutu yazın:

php artisan generate:blade-css

Parametre veya seçenekler eklediyseniz şu şekilde çağırabilirsiniz:

php artisan generate:blade-css home.blade.php --minify

7. Komutta Kullanılabilecek Yararlı Metotlar

7.1. Bilgilendirme Mesajları Gösterme

Terminale bilgi mesajı yazdırmak için:

$this->info('İşlem tamamlandı!');
$this->line('Herhangi bir mesaj.');
$this->error('Bir hata oluştu!');

7.2. Kullanıcıdan Onay Alma

Bir işlem için kullanıcı onayı alabilirsiniz:

if ($this->confirm('Devam etmek istiyor musunuz?')) {
    $this->info('Devam ediliyor...');
}

7.3. Kullanıcıdan Veri Alma

Kullanıcıdan bir giriş almak için:

$name = $this->ask('Dosyanın adı ne olsun?');
$this->info("Girilen isim: $name");

7.4. İlerleme Çubuğu Kullanma

Uzun işlemler için bir ilerleme çubuğu gösterebilirsiniz:

$tasks = ['Görev 1', 'Görev 2', 'Görev 3'];

$bar = $this->output->createProgressBar(count($tasks));

foreach ($tasks as $task) {
    sleep(1); // İşlemi simüle etmek için
    $bar->advance();
}

$bar->finish();
$this->info("\nTüm görevler tamamlandı!");

8. Komutun Test Edilmesi

Laravel'de Artisan komutlarını test etmek için expectsOutput, expectsQuestion gibi yöntemler kullanılabilir. Örneğin:

public function test_generate_blade_css()
{
    $this->artisan('generate:blade-css')
         ->expectsOutput('GenerateBladeCSS komutu çalıştırıldı!')
         ->assertExitCode(0);
}

9. Örnek Uygulama: Blade Dosyalarından CSS Oluşturma

Önceki adımlarda verdiğim kodu kullanarak bir uygulama geliştirebilir ve belirli işlemleri otomatikleştirebilirsiniz.


Laravel Artisan komutları, projelerde tekrar eden işleri otomatikleştirmek ve verimliliği artırmak için mükemmel bir araçtır. Yukarıdaki adımları takip ederek, istediğiniz işlemleri kolayca gerçekleştirebilecek özelleştirilmiş komutlar oluşturabilirsiniz.

Aykhan Gasimzade Aykhan Gasimzade verified icon
Full Stack Developer

Merhaba! Ben Aykhan, 1999 doğumlu bir Azerbaycanlıyım ve 2017 yılından bu yana programlamayla ilgileniyorum. Teknolojinin büyülü dünyası beni her zaman etkilemiştir ve bu merakımı kendi blogumda paylaşarak daha geniş bir kitleyle buluşturmayı amaçlıyorum.