Artisan Nedir ?
Artisan Laravel’de bulunan komut satırı arayüzüdür. Terminal ekranında yazdığımız bu komutlar sayesinde laravelin bize sağladığı bir çok kısayolu ve kodları projemize hazır paket halinde dahil edebiliriz.Artisan, uygulamanızın kökünde art,san komut dosyası olarak bulunur ve uygulamanızı oluştururken size yardımcı olabilecek bir dizi yardımcı komut sağlar. Tanımlı artisan komutlarını görmek için list komutunu kullanabiliriz.
php artisan list
Her komut aynı zamanda komutun mevcut argümanlarını ve seçeneklerini görüntüleyen ve açıklayan bir “yardım” ekranı içerir. Bir yardım ekranını görüntülemek için, komutun önüne hp ifadesini eklemeniz yeterlidir.
php artisan help migrate
Artisan Özel Komut Oluşturma
Artisan’ın varsayılan olarak oluşturulmuş komutları dışında kendinize has artisan komutarı da oluşturabilirsiniz. Bu komutar genelikle app/Console/Commands Klasöründe saklanır.
Yeni bir komut oluşturmak için make:command komutunu kullanabiliriz. Bu komut, app/Console/Commands dizininde yeni bir komut sınıfı oluşturacaktır. Uygulamanızı ilk oluşturduğunuzda böyle bir klasör yoktur. Komutu kullandığımız zaman artisan bizim için oluşuturur.
php artisan make:command deneme
Artisan Komut Yapısı
Komutunuzu oluşturduktan sonra sınıfın signature ve description özelliklerine uygun değerleri tanımlamanız gerekir. Bu özellikler php artisan list yazdığımız zaman karşımıza çıkacaktır. Mesela ekrana ismimizi yazdıran bir artisan komutu oluşturalım.
ilk olarak komut satırına şunu yazalım.
php artisan make:command isimyaz
Şimdi command dosyamıza bakalım oluşmuş mu diye.
isimyaz.php dosyamızı düzenleyelim
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class isimyaz extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'isimyaz:isim {isim}'; /** * The console command description. * * @var string */ protected $description = 'Komut Satırına İsminizi Yazar'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { echo $this->argument('isim'); } }
$signature ve $dexription alanları önemlidir. Signature alanında komutu oluşturup description alanında ise anlamını yazarız. Böylelikle php artisan list yazdığımız zaman ekranda komutun ne işe yaradığını anlatan kısmı görmüş oluruz. Hemen deneyelim.
Şimdi de komutumuzu çalıştıralım bakalım çalışacak mı ?
$ artisan isimyaz isim:bilisim34 bilisim34 //şeklinde çıktısı olacaktır
Artisan komutları oluşturmak bu kadar kolay.
Seçenekler
Seçenekler, argümanlar gibi, başka bir kullanıcı girişi şeklidir. Seçenekler, komut satırı aracılığıyla sağlandığında iki tire (–) ile eklenir. Burada iki tür seçenek vardır: değer alanlar ve almayanlar. Değer almayan seçenekler, boolean “anahtar” işlevi görür. Bu tür bir seçenek örneğine bir göz atalım:
protected $signature = 'mail:send {user} {--queue}';
Bu örnekte, Artisan komutu çağrılırken –queue anahtarı belirtilebilir. –queue anahtarı geçirilirse, seçeneğin değeri doğru olacaktır. Aksi takdirde, değer yanlış olacaktır:
Değerleri Olan Seçenekler
Ardından, bir değer bekleyen bir seçeneğe bakalım. Kullanıcının bir seçenek için bir değer belirtmesi gerekiyorsa, seçenek adının sonuna bir = işareti eklemelisiniz:
Aşağıdaki örnekte, kullanıcı böyle bir seçenek için bir değer iletebilir. Komut çağrılırken seçenek belirtilmemişse, değeri null olacaktır:
php artisan mail:send 1 --queue=default
Artisan İle Komut Ekranında Soru Sorarak İşlem Yapmak
Bazı durumlarda komut satırında işleme devam etmek için kullanıcıdan girdi almak isteyebiliriz. Bunun için ask metodunu kullanırız.
public function handle() { $name = $this->ask('What is your name?'); echo $this->argument('isim'); }
Artisan Onay Alarak İşleme Devam Etme
Kullanıcıdan basit bir “evet veya hayır” onayı istemeniz gerekiyorsa, confirm yöntemini kullanabilirsiniz. Varsayılan olarak, bu yöntem false döndürür.
public function handle() { if ($this->confirm('Devam Etmek İster Misiniz ?')) { echo $this->argument('isim'); } }