PHP 8.2.0 Beta 3 available for testing

Nesnelerden farkları

Numaralandırmalar, sınıflar ve nesnelerde yerleşik bulunabilirse de, nesnelerle ilgili işlevselliğin tamamını kullanamaz. Özellikle, numaralandırmalar durumlu olamaz.

  • Kurucular ve yıkıcılar kullanılamaz.
  • Kalıtım desteklenmez. Numaralandırmalar ne genişletebilir ne de genişletilebilir.
  • Statik ve nesne özelliklere izin verilmez.
  • Bir numaralandırmanın kopyalanması, kılıfların tekil örnekler olması gerektiğinden desteklenmez.
  • Aşağıda sıralananlar dışında kalan Sihirli yöntemlere izin verilmez.
  • Numaralandırmalar kullanılmadan önce bildirilmelidir.

Aşağıdaki nesne işlevselliği kullanılabilir ve diğer nesnelerdeki davranış elde edilir:

  • Public, private ve protected yöntemler.
  • Public, private ve protected static yöntemler.
  • Public, private ve protected sabitler.
  • Numaralandırmalar çok sayıda arayüz gerçekleyebilir.
  • Numaralandırmalar ve kılıfların kendilerine ekli öznitelikleri olabilir. TARGET_CLASS hedef süzgeci numaralandırmaların kendilerini içerir. TARGET_CLASS_CONST hedef süzgeci ise numaralandırma kılıflarını içerir.
  • __call, __callStatic, ve __invoke sihirli yöntemleri
  • __CLASS__ ve __FUNCTION__ sabitleri normal olarak davranır.

Bir numaralandırma türündeki ::class sihirli sabiti, tamamen bir nesnedeki gibi isim alanlı tür adı olarak değerlendirilir. Bir kılıf örneğindeki ::class sihirli sabiti ise, o türün tekil örneği olduğu için numaralandırma olarak değerlendirilir.

Ayrıca, numaralandırma kılıfları doğrudan new ile örneklenemediği gibi yansıtma içinde ReflectionClass::newInstanceWithoutConstructor() ile de örneklenemez.

<?php
$trefl 
= new Deste();
// Hata: enum Deste örneklenemez
$kör = (new ReflectionClass(Deste::class))->KurucusuzYeniÖrnek()
// Hata: enum Deste örneklenemez
?>
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top