Longhorn PHP 2023 - Call for Papers

Sabit ifadelerinde sayılama değerleri

Kılıflar enum üzerinde sabitler olarak temsil edildiğinden, çoğu sabit ifadesinde statik değerler olarak kullanılabilir: özellik öntanımlıları, statik değişken öntanımlıları, bağımsız değişken öntanımlıları, küresel ve sınıf sabitlerinin değerleri. Ancak diğer kılıf değerlerinde kullanılamaz, sadece enum sabitleri bir kılıfa atıfta bulunabilir.

Ancak, sonuç değerinin belirleyici olduğunu veya yöntem çağrılarının yan etkilerden arınmış olduğunu kesinlikle garanti edemediğimiz için, sayılamalarda ArrayAccess gibi örtük sihirli yöntem çağrılarına statik veya sabit tanımlar içinde izin verilmez. İşlev çağrıları, yöntem çağrıları ve özellik erişimi, sabit ifadeler içinde geçersiz işlemler olarak kalmaya devam eder.

<?php
// Bu tamamen geçerli bir sayılama tanımıdır.
enum Direction implements ArrayAccess
{
case
Up;
case
Down;
public function
offsetGet($val) { ... }
public function
offsetExists($val) { ... }
public function
offsetSet($val) { throw new Exception(); }
public function
offsetUnset($val) { throw new Exception(); }
}
class
Foo
{
// Buna izin verilir.
const Bar = Direction::Down;
// Buna izin verilmez, belirleyici olmayabilir.
const Bar = Direction::Up['short'];
// Ölümcül Hata: enum üzerinde sabit ifadesi içinde [] kullanılamaz
}
// Bu, bir sabit ifadesi olmadığından tamamen geçerlidir.
$x = Direction::Up['short'];
?>
add a note

User Contributed Notes

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