CB DIGITAL
Tüm Makalelere Dön
PHP & Laravel
2 Mart 2026

Laravel Custom Artisan Komutu (Console Command) Nasıl Yazılır?

Cengiz Bozdemir
Cengiz BozdemirKurumsal Yazılım Mimarı
Laravel Custom Artisan Komutu (Console Command) Nasıl Yazılır?

📌 Rehber Özeti & Hedef Çıktı

Veri aktarımı, toplu faturalandırma veya sistem bakımı gibi işlemleri terminalden parametrelerle çalıştırabilen CLI komutu geliştirme rehberi.

1. Giriş ve Karşılaşılan Temel Zorluklar

Sunucu bakımı veya periyodik veri senkronizasyonu için web controller'larına gizli linkler eklemek güvenlik açığı ve zaman aşımı (timeout) üretir.

Modern kurumsal yazılım mimarisinde bu adımı doğru tasarlamak; hem uygulamanın bakım maliyetini (maintainability) düşürür hem de gelecekteki ölçekleme (scaling) süreçlerinde refactor ihtiyacını en aza indirir. Bu rehberde, sektörde kabul görmüş standartlar ışığında adım adım uygulamayı ele alıyoruz.

2. Ortam Hazırlığı ve Gerekli Bağımlılıklar

Geliştirmeye başlamadan önce sistem ortamınızın ve ilgili paketlerin hazır olduğundan emin olmalısınız. Terminalinizde aşağıdaki komutları çalıştırarak ilgili yapılandırmayı tamamlayın:

  • Adım: Terminalde 'php artisan make:command SyncInvoicesCommand' komutunu çalıştırın.
  • Adım: app/Console/Commands altındaki dosyada imza (signature) ve açıklamayı düzenleyin.

3. Uygulama Mimarisi ve Kod Örneği

Aşağıdaki kod bloğunda, temiz kod (Clean Code) prensiplerine ve SOLID standartlarına uygun olarak tasarlanmış örnek implementasyonu inceleyebilirsiniz:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Services\InvoiceSyncService;

class SyncInvoicesCommand extends Command
{
    protected $signature = 'invoices:sync {--days=7 : Kaç günlük fatura taranacak} {--dry-run : Kayıt yapmadan test et}';
    protected $description = 'Muhasebe entegrasyonundan faturaları senkronize eder';

    public function handle(InvoiceSyncService $syncService): int
    {
        $days = (int) $this->option('days');
        $isDryRun = $this->option('dry-run');

        $this->info("Son {$days} günün faturaları taranıyor... Dry Run: " . ($isDryRun ? 'EVET' : 'HAYIR'));

        $count = $syncService->run($days, $isDryRun);

        $this->table(['İşlem', 'Adet'], [['Senkronize Edilen Fatura', $count]]);
        $this->info('Senkronizasyon başarıyla tamamlandı.');

        return Command::SUCCESS;
    }
}

4. Kod Analizi ve Çalışma Mantığı

İmza içinde opsiyonel bayraklar tanımlanır. $this->table ve $this->info ile şık terminal çıktıları üretilir. Bağımlılıklar handle metoduna otomatik enjekte edilir.

Yukarıdaki implementasyonda dikkat edilmesi gereken en kritik husus, işlemlerin bağımsız (decoupled) ve test edilebilir şekilde katmanlara ayrılmış olmasıdır. Bu yaklaşım, birim testlerin (Unit Tests) ve entegrasyon testlerinin hızlıca yazılabilmesine olanak tanır.

5. Performans ve Güvenlik İpuçları

Canlı üretim (production) ortamında sistemin kararlı çalışması için aşağıdaki pratikleri mutlaka dikkate almalısınız:

  • Komutları CLI üzerinde çalıştırırken memory_limit sorunlarını engellemek için chunk() veya cursor() kullanın.
  • Geri dönüş değeri olarak daima Command::SUCCESS veya Command::FAILURE kullanın.
  • Kullanıcıya ilerleme durumu göstermek için $this->output->createProgressBar() metodundan yararlanın.

6. En Sık Yapılan Hatalar ve Hata Ayıklama (Troubleshooting)

Büyük veri güncellemelerinde progress bar kullanmamak komutun donduğu hissini yaratır.

Eğer beklenmedik bir hata ile karşılaşırsanız; öncelikle log dosyalarını incelemeli, ortam değişkenlerinin (.env) doğru tanımlandığını doğrulamalı ve önbellek (cache) mekanizmalarını temizleyerek sistemi yeniden başlatmalısınız.

7. Sonuç ve Mimari Değerlendirme

Artisan komutları, kurumsal sistemlerde devops ve operasyon ekiplerinin en güçlü otomasyon aracıdır.

Cengiz Bozdemir olarak 18 yılı aşkın kurumsal yazılım mimarlığı deneyimimle tavsiyem; sistem tasarımında her zaman sürdürülebilirlik, güvenlik ve yüksek eşzamanlılık (high concurrency) hedeflerini ön planda tutmanızdır. Kurumsal projelerinizde özel mimari danışmanlık veya uçtan uca yazılım geliştirme desteği için bizimle iletişime geçebilirsiniz.

#laravel#artisan#cli#console command#devops#php
Cengiz Bozdemir

Cengiz Bozdemir

Kurumsal Yazılım Mimarı & Full-Stack Geliştirici

İşletmeniz veya girişiminiz için yüksek performanslı sistemler, özel yazılımlar ve yapay zeka otomasyonları inşa ediyorum.

KURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITAL
© 2026 CB DIGITAL Tüm hakları saklıdır.