Arkadaşlar merhaba, yaklaşık 2 yıldır PHP 7.4 ile sürdürdüğüm bir projeyi PHP 8'e taşıma kararı aldım. Geçiş sürecinde en çok kafamı kurcalayan şeylerden biri de union tipler oldu. Özellikle fonksiyon parametrelerinde ve dönüş tiplerinde birden fazla tür belirtebilmek bana çok cazip geliyor, ama bir yandan da mevcut kod yapımı nasıl etkileyeceği konusunda endişeliyim.
Şu anki projede sıkça null döndüren veya farklı türlerde veri alan metodlarım var. Mesela bir kullanıcı sorgulama fonksiyonu, kullanıcı bulunamazsa false döndürüyor, bulunursa array döndürüyor. Bu tip durumlarda union tiplerle `array|false` gibi bir kullanımın kod okunabilirliğini artıracağını düşünüyorum. Ama aynı zamanda tip güvenliği konusunda da kafa karışıklığı yaşıyorum: Union tip kullandığımda IDE ve statik analiz araçları gerçekten bu kadar başarılı çalışıyor mu? Yoksa bazen gereksiz yere kod karmaşıklığına mı yol açıyor?
Özellikle şu konuda deneyimlerinizi merak ediyorum: Var olan bir projede union tiplere geçerken nelere dikkat ettiniz? Örneğin, daha önce `?int` (nullable int) kullandığım yerlerde artık `int|null` yazmak zorunda mıyım? Yoksa ikisi de aynı şey mi sayılıyor? Ayrıca, union tiplerin performansa bir etkisi var mı, yoksa sadece derleme zamanında mı işe yarıyor? Benim gibi geçiş sürecinde olan varsa, özellikle hata yakalama ve loglama açısından union tiplerin avantajını veya dezavantajını hissetmiş midir? Yorumlarınızı bekliyorum, teşekkürler.
Şu anki projede sıkça null döndüren veya farklı türlerde veri alan metodlarım var. Mesela bir kullanıcı sorgulama fonksiyonu, kullanıcı bulunamazsa false döndürüyor, bulunursa array döndürüyor. Bu tip durumlarda union tiplerle `array|false` gibi bir kullanımın kod okunabilirliğini artıracağını düşünüyorum. Ama aynı zamanda tip güvenliği konusunda da kafa karışıklığı yaşıyorum: Union tip kullandığımda IDE ve statik analiz araçları gerçekten bu kadar başarılı çalışıyor mu? Yoksa bazen gereksiz yere kod karmaşıklığına mı yol açıyor?
Özellikle şu konuda deneyimlerinizi merak ediyorum: Var olan bir projede union tiplere geçerken nelere dikkat ettiniz? Örneğin, daha önce `?int` (nullable int) kullandığım yerlerde artık `int|null` yazmak zorunda mıyım? Yoksa ikisi de aynı şey mi sayılıyor? Ayrıca, union tiplerin performansa bir etkisi var mı, yoksa sadece derleme zamanında mı işe yarıyor? Benim gibi geçiş sürecinde olan varsa, özellikle hata yakalama ve loglama açısından union tiplerin avantajını veya dezavantajını hissetmiş midir? Yorumlarınızı bekliyorum, teşekkürler.