PHP 8.3+ İle Gelen Güvenlik: Sabitlerde Tip Belirleme

PHP 8.3+ İle Gelen Güvenlik: Sabitlerde Tip Belirleme

PHP 8.0 ile başlayan tip güvenliği devrimi, 8.3 sürümüyle sınıf sabitlerine (Class Constants) kadar ulaştı. Artık sadece değişkenlerin ve parametrelerin değil, sabitlerin de hangi tipte olduğunu garanti altına alabiliyoruz.

Neden Sabitlere Tip Eklemeliyiz?

PHP'de sınıflar arası kalıtım (inheritance) kullanırken, bir üst sınıftaki sabiti alt sınıfta ezmek mümkündür. Ancak tip belirlenmediğinde, bir geliştirici farkında olmadan sabitin veri türünü değiştirebilir.

Örnek Senaryo:

class BaseConfig {
    public const string API_VERSION = "v1";
}

class DevConfig extends BaseConfig {
    // Eğer burada 'string' dışında bir tip atanırsa PHP Fatal Error verir.
    public const string API_VERSION = "v2"; 
}

Teknik Detaylar

Variance Kontrolü: Alt sınıfta sabiti ezerken tipi değiştiremezsiniz. Eğer üst sınıfta string ise, alt sınıfta da string kalmalıdır.

Interface Uyumu: Bir interface içinde tanımladığınız tip zorunluluğu, o interface'i implement eden tüm sınıflar için geçerli hale gelir.

Performans: Tip kontrolü derleme (compile) aşamasında yapıldığı için çalışma zamanında (runtime) ekstra bir yük getirmez.

Tarih: