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.
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.