Her PHP geliştirici, hızlı bir fikri test etme, bir sorgu çalıştırma veya belirli verilerle bir servisin nasıl davrandığını kontrol etme ihtiyacıyla karşılaşmıştır. Bu durumlarda genellikle aşağıdakilerden birini yaparız:
- Tinker’ı açıp her hatadan sonra framework bağlamını kaybetmek
- Geçici bir route oluşturup, tarayıcıdan çalıştırmak ve sonra silmek
- Sadece bir kere çalıştıracağınız bir artisan komutu yazmak
- Bir yere
dd()ekleyip sayfayı yenileyip silmek, bunu tekrar etmek
Bunların hiçbiri ideal değil. Sadece yaşamak zorunda kaldığımız en kötü seçeneklerdir.
Projeyi Gerçekten Tanıyan Bir REPL
DDLess içinde farklı çalışan bir Görev Yürütücüsü (Task Runner) geliştirdim. Bu, Laravel, Symfony, WordPress ya da herhangi bir PHP projesini başlatıyor ve her şeyin kullanılabilir olduğu kalıcı bir ortam sunuyor. Modeller, servisler, yardımcı fonksiyonlar, yapılandırmalar, veritabanı bağlantıları… Hepsi canlı ve hazır.
PHP yazıyorsunuz, çalıştırıyorsunuz ve çıktıyı görüyorsunuz. Geçici dosyalar yok. Sahte route yok. Yeniden başlatma yok.
Gerçek Problemleri Çözüyor
Komut Yazmadan Hızlı Veri İhracı
Bir müşteri, belirli bir formatla 17.000 kayıtlık bir CSV ihracına ihtiyaç duydu. Bir artisan komutu oluşturmaktansa, bunu doğrudan Görev Yürütücüsünde yazdım:
$this->export('points_of_sale', function ($page) {
$records = PointOfSale::with(['segment', 'adfLevel'])
->offset($page * 500)
->limit(500)
->get();
if ($records->isEmpty()) return null;
return $records->map(fn ($r) => [
'Name' => $r->business_name,
'Segment' => $r->segment?->name ?? '-',
'Active' => $r->active ? 'Yes' : 'No',
])->toArray();
});
İlerleme çubuğu, sayfalama ve sonunda bir indirme butonu. 17.415 satır dakikalar içinde tamamlandı.
Kodu Taahhüt Etmeden Fikirleri Test Etme
Bir servisin uç durum verileriyle doğru çalışıp çalışmadığından emin değilsiniz. Bir test yazmak ya da endpoint’i manuel olarak kontrol etmek yerine, bunu doğrudan çalıştırıyorsunuz:
$service = app(OrderService::class);
$result = $service->calculate(userId: 42, coupon: 'EXPIRED_CODE');
$this->json($result);
Tam framework bağlamı. Gerçek bağımlılık enjekte etme. Gerçek veritabanı. Hiçbir taklit yok.
Etkileşimli Çıktılar
Görev Yürütücüsü sadece metin değil. Grafikler, etkileşimli alanlar, doğrulama geri bildirimleri ve formatlanmış tablolar sunar. Tek bir Blade görünümü oluşturmadan hızlı iç araçlar geliştirebilirsiniz.
Veri İçe Aktarma ve Dönüştürme
Bir CSV’yi işleyip veritabanına aktarmanız mı gerekiyor? Görev Yürütücüsü, büyük dosyaları belleğe yüklemeden akış halinde işlemenizi sağlayan $this->import() fonksiyonunu bir generator olarak destekler:
foreach ($this->import('users.csv') as $row) {
User::updateOrCreate(
['email' => $row['email']],
['name' => $row['name'], 'role' => $row['role']]
);
}
Ücretsiz
Görev Yürütücüsü, DDLess içinde ücretsiz olarak sunulmaktadır. Pro aboneliği, deneme süresi veya kullanım kısıtlaması yok. İndirip kullanabilirsiniz.
DDLess, Xdebug olmadan adım adım hata ayıklama, yöntem testi ve bir AI yardımcı pilotunu da içeren bir PHP geliştirme atölyesidir. Ancak Görev Yürütücüsü tek başına bile indirilmeye değer.
DDLess’in arka planda yaşadığı tam teknik hikayeyi, AST enstrümantasyon yaklaşımını ve neden Xdebug’a ihtiyaç duyulmadığını okumak isterseniz, PHP Reads Issue #6’da yer alan blog yazısını inceleyebilirsiniz: ddless.com/blog/technical-journey-building-php-debugger
Kaynak: Orijinal Makale


