PHP’den JSON’a Dönüştürücü
PHP sınıflarını, dizilerini ya da objelerini yapıştır. Temiz JSON al.
Bu araç ne işe yarıyor
Elinizde tipli property’lerle dolu bir PHP sınıfı var ve bir test, bir API çağrısı ya da bir fixture için JSON payload’ı lazımsa, diziyi elle yazmak baya zahmetli. PHP’yi buraya yapıştırın, her property’si korunmuş geçerli JSON geri alın. Tek sınıfla da olur, bir Doctrine entity dosyasıyla da, Laravel Eloquent modeliyle de, düz bir ilişkisel diziyle de — sonuç aynı, çıktı geçerli JSON.
Dönüştürücü, çalışma zamanında json_encode()’un yaptığını bire bir yapıyor. Tipli property’ler (PHP 7.4+) ve readonly property’ler (PHP 8.1+) sıradan JSON anahtarları olarak çıkar. Tamsayı, float, boolean ve string’ler bire bir eşlenir. null, JSON’da null olur. İç içe obje örnekleri iç içe JSON objelerine açılır. İlişkisel diziler JSON objesine; sayısal indeksli diziler JSON dizisine dönüşür — json_encode’un yaptığı ayrımın aynısı.
Modern PHP özellikleri de halleder. Backed enum’lar arkadaki değere (string ya da int) serileşir. DateTimeImmutable, ISO-8601 string olarak çıkar. Bir seferde birden fazla sınıfı yapıştırırsanız — Packagist’ten aldığınız bir şey gibi — her üst seviye sınıf JSON’da kendi anahtarına dönüşür, iç içe tipler açılır. Metotlar, sabitler ve statik property’ler atlanır; çıktıya yalnızca instance verisi girer.
Nasıl kullanılır
Üç adım. On satır yapıştırsanız da koca bir Model dosyası yapıştırsanız da aynı şekilde çalışır.
PHP’nizi yapıştırın (ya da örneği deneyin)
PHP’nizi olduğu gibi soldaki editöre atın. Bir sınıf tanımı, yeni bir instance, ilişkisel dizi ya da birden fazla sınıf — hepsi olur. Önce gerçekçi bir örnek görmek isterseniz Örneği Yükle’ye basın.
Tam PHP söz dizimini koruyun — namespace’ler, use ifadeleri, görünürlük belirleyiciler, attribute’lar. Parser ihtiyacı olmayan kalıp kodu görmezden gelir.
Dönüştür’e basın
Yeşil Dönüştür butonuna tıklayın. Araç PHP’yi okur, her property’yi ve sınıfı korur ve JSON’u tek bir geçişte kurar. Çalışırken kısa bir yükleme göstergesi görürsünüz.
JSON’u kopyalayın
Sağdaki panel girintili JSON ile dolar. Doğrudan bir HTTP isteği gövdesine, bir PHPUnit fixture’ına, bir config dosyasına ya da API dokümantasyonunuza yapıştırın.
Gerçekten işe yaradığı anlar
API istek payload’ları hazırlamak
Elinizde bir CreateOrderRequest DTO’su var ve Postman, curl ya da bir entegrasyon testi için denk gelen JSON gövdesi gerekiyor. Sınıfı yapıştırın, payload’ı alın.
Laravel veya Symfony seed’lemek
Bir sürü <code>new Product(...)</code> factory satırını database:seed ya da fixture yükleyiciler için bir JSON seed dosyasına çevirin — artık elle dizi yazmak yok.
OpenAPI örneklerini gerçekçi tutmak
OpenAPI spesifikasyonunuz için JSON örneklerini doğrudan gerçek DTO’larınızdan üretin, böylece şema örnekleri kodunuzla senkron kalır.
json_encode çıktısını debug etmek
Bir obje beklediğiniz gibi serileşmiyorsa, temiz halini görmek için buraya yapıştırın — sonra <code>json_encode()</code>’un gerçekten ne ürettiğiyle karşılaştırın.
Sık sorulan sorular
PHP 8’in tipli ve readonly property’lerini destekliyor mu?
Evet. Tipli property’ler, nullable tipler (?string), readonly belirleyiciler ve constructor’da promote edilmiş property’ler hepsi yakalanıyor. Tip ipucu JSON değerini değiştirmiyor — sadece parser’a ne beklemesi gerektiğini söylüyor.
Peki enum’lar?
Backed enum’lar arkadaki değere (string veya int) serileşir. Backing tipi olmayan saf enum’lar case adıyla çıkar. Bu, BackedEnum üzerindeki standart json_encode davranışıyla aynı.
İlişkisel dizi vs indeksli dizi — hangisi objeye dönüyor?
json_encode ile aynı kural: 0’dan başlayan sıralı dizi JSON dizisine dönüşür; string anahtarlı (veya sıralı olmayan tamsayı anahtarlı) herhangi bir dizi ise JSON objesine dönüşür.
DateTime ve DateTimeImmutable nasıl serileşiyor?
ISO-8601 string olarak, $dt->format(DateTime::ATOM)’dan aldığınız formatta. Tarihinizde saat dilimi varsa, offset çıktıda korunur.
Komple bir models dosyası yapıştırabilir miyim?
Evet. Her üst seviye sınıf kendi JSON girişine dönüşür, iç içe objeler doğal şekilde açılır ve constructor’da atanan property’ler dahil edilir. private ve protected property’ler de çıkışa dahil olur — parser görünürlüğe değil, şekle bakıyor.
Kodum saklanıyor mu?
PHP’niz dönüştürme için backend’e gönderilir ve kalıcı olarak tutulmaz — payload’ı loglamıyoruz. Hassas kod için yapıştırmadan önce bir göz gezdirin.
İhtiyaç duyabileceğiniz diğer araçlar
PHP’den JSON’a tek bir parça. Bunlar da onunla iyi gider: