· kaynak dev.to (home feed)
Tanuki framework, PHP için sihirbarmayan okunabilir bir MVC sunuyor; auth ve admin opsiyonel
Yeni yayımlanan Tanuki adlı PHP framework'ü, routing, PDO tabanlı modeller ve düz PHP view'lar sunuyor; ORM, template engine veya DI container içermiyor, auth ve admin paneli ise opsiyonel modüller olarak tutuluyor.

Tam framework'ler ile düz PHP arasında bir orta yol
developer'ın 6 Eylül 2026'da yayımladığı dev.to duyuru yazısına göre Tanuki, küçük projeler için iki tatmin edici olmayan başlangıç noktası arasında sıkışan geliştiricilere yönelik hafif bir PHP MVC framework'ü: ORM'i, template dili, container'ı ve klasör kuralları uygulamanın kendisinden daha fazla öğrenme gerektiren ağır bir framework benimsemek ya da tamamen çıplak giderek routing'i, veritabanı sarmalayıcılarını, CSRF korumasını ve session yönetimini her seferinde aceleyle yeniden yazmak.
Tanuki'nin iddiası, bu rutin temel işi, uçtan uca okunabilecek kadar küçük bir kodla bir kez çözmek. Yazar, tüm istek yaşam döngüsünün — giriş betiği, ortam yüklemesi, autoloader kaydı, hata yapılandırması, route eşleştirme ve controller yönlendirmesi — bir geliştiricinin yaklaşık on dakikada sindirebileceği bir kaynak ağacına sığdığını tahmin ediyor.
Bilinçli eksikler
Route'lar düz bir dizide veri olarak tanımlanıyor; GET /todo/{id} gibi desenler bir controller metoduna eşleniyor, decorator'lar veya attribute tabanlı numaralar yok. Model temel sınıfı, PDO'nun üzerinde küçük bir katman ve bir where() filtresi gibi çağrıları, geliştiricinin elle de yazabileceği sıradan prepared statement'lara dönüştürüyor. View'lar ise yalnızca kaçış (escaping) yardımcı fonksiyonu içeren düz PHP dosyaları; yeni bir template sözdizimi değil. ORM yok, template engine yok, dependency injection container yok — yazar bu eksikleri boşluk değil özellik olarak sunuyor.
Depo, öğrenme referansı olarak eksiksiz bir to-do uygulamasıyla geliyor. Controller'ı CSRF doğrulaması, doğrulama başarısız olduğunda form alanlarının yeniden doldurulması ve flash mesajları gösteriyor — yazar, form-request sınıfları yapılandırmak yerine kendi kaynaklarınıza uyarlayacağınız pratik desenler olduklarını söylüyor.
Gömülü değil, görünür güvenlik
dev.to yazısına göre her model metodu prepared statement kullanıyor ve sütun ile tablo adları katı bir tanımlayıcı desenine karşı doğrulanıyor. Yazar, geliştirme sırasında bir sütun adı enjeksiyon açığının keşfedilip düzeltildiğini ve bunu kapsayan bir regression testinin bulunduğunu belirtiyor. CSRF koruması, her route'a sessizce uygulanan bir politika yerine formlara açıkça eklenen yardımcı fonksiyonlarla ele alınıyor — yazar, kapsamlı yaklaşımın webhook gibi oturumsuz endpoint'leri bozacağını savunuyor. Parolalar PHP'nin yerleşik hashing fonksiyonlarına dayanıyor, parola kurtarma token'ları süreli, tek kullanımlık SHA-256 hash'leri ve session ID'leri fixation saldırılarını önlemek için giriş ve çıkışta yeniden üretiliyor.
Bağlanana kadar pasif kalan eklentiler
Depoda iki modül bulunuyor ancak etkinleştirilene kadar hiçbir şey kaydetmiyorlar. tanuki_login, session tabanlı kimlik doğrulaması sunuyor — giriş, kayıt, e-posta tabanlı parola kurtarma ve profil düzenleme — ve varsayılan olarak hiçbir route etkin değil. tanuki_admin ise Django'dan ilham alan bir admin paneli: tek bir yapılandırma dizisinde bir model kaydediyorsunuz ve onun için eksiksiz bir CRUD arayüzü alıyorsunuz. Modüllerden birini kaldırmak, klasörünü ve routes dosyasında ona referans veren iki satırı silmek anlamına geliyor; yazar bu izolasyonu baştan itibaren bilinçli bir tasarım kısıtı olarak tanımlıyor.
Tercümeler en aza indiriliyor
Uluslararasılaştırma, dil başına bir JSON sözlük ve placeholder enterpolasyonu yapan tek bir yardımcı fonksiyondan oluşuyor. Eksik bir anahtar İngilizceye düşüyor; her yerde eksikse, sayfayı bozmak yerine ham anahtar döndürülüyor. İsteğe bağlı URL tabanlı dil değiştirici (/en/todo, /es/todo), ortam dosyasında ACCEPTED_LANGUAGES tanımlanmadıkça pasif kalıyor ve ziyaretçi bir dil seçtiğinde bu seçim session'da saklanıyor, böylece diğer tüm bağlantılar önek olmadan çalışıyor. Tek dilli projeler bu mekanizmanın hiçbirini görmez.
Başlangıç ve kalıcılık iddiaları
Kurulum; bir composer create-project komutu, örnek ortam dosyasının kopyalanması, veritabanı kimlik bilgilerinin girilmesi ve PHP'nin yerleşik sunucusunun çalıştırılmasından oluşuyor. İki duyuru yazısı tam paket adında ayrışıyor: İngilizce sürüm Packagist'te forja-de-onix/tanuki-framework'e işaret ederken İspanyolca sürüm yer tutucu gibi görünen bir ad gösteriyor; dolayısıyla güvenilir referans İngilizce yazı. Ayrıca bir GitHub deposuna ve bir dokümantasyon wiki'sine bağlantı veriyor.
Yazar, Tanuki'nin özelliklerde Laravel veya Symfony ile yarışmadığını açıkça belirtiyor. Beyan edilen hedef kararlılık: bugün üzerinde kurulan bir projenin beş yıl sonra, yalnızca küçük yamalar alarak ve hiçbir kırıcı yeniden yazıma uğramadan, değişmeden çalışmaya devam etmesi.
Neden önemli
PHP ekosistemindeki ilginin çoğu büyük, kural yoğun framework'lere gidiyor ve küçük uygulamalar geliştirenler, hiç kullanmadıkları yetenekler için bir öğrenme ve bakım vergisi ödüyor. Tanuki, bir framework'ün okunabilecek kadar küçük, hata ayıklanabilecek kadar açık ve trendleri geride bırakacak kadar kararlı olabileceğine dair bir iddia — ve kimlik doğrulama, admin araçları ile i18n konusundaki opt-in tasarımı, kolaylığın zorunluluğa dönüşmesini engellemenin bir yolunu gösteriyor.
Uyarılar genç bir proje için her zamanki gibi: yukarıdaki her iddia bağımsız bir incelemeye değil geliştiricinin kendi duyurusuna dayanıyor, henüz benimsenme verisi yok ve beş yıllık kararlılık sözü, arkasındaki maintain kadar güçlü. Yine de düz SQL, düz PHP template'ler ve kafasında tutabileceği bir kod tabanı tercih eden geliştiriciler için bu sürüme bir göz atmak değer.
- #php
- #frameworks
- #mvc
- #open-source
- #web-development