PHP 8.4.0 RC4 available for testing

Nitelikler

Sayılamalar, sınıflardaki gibi davranan niteliklerden yararlanabilir. Ancak, bir sayılama içinde kullanılan niteliklerin özelliklerinin olmamasına dikkat edilmelidir; sadece yöntemler ve statik yöntemler içerebilir. Özellikleri olan bir nitelik ölümcül hata ile sonuçlanır.

<?php

interface Renkli
{
public function
renk(): string;
}
trait
Dörtgen
{
public function
kesim(): string {
return
"Dörtgen";
}
}
enum
Deste implements Renkli
{
use
Dörtgen;
case
Kupalar;
case
Karolar;
case
Sinekler;
case
Maçalar;
public function
renk(): string
{
return match(
$this) {
Deste::Kupalar, Deste::Karolar => 'Kırmızı',
Deste::Sinekler, Deste::Maçalar => 'Siyah',
};
}
}
?>
add a note

User Contributed Notes 1 note

up
14
wervin at mail dot com
8 months ago
One good example of a trait, would be to give a lot of enums a method to retrieve their cases, values or both.

<?php
trait EnumToArray
{
public static function
names(): array
{
return
array_column(self::cases(), 'name');

}

public static function
values(): array
{
return
array_column(self::cases(), 'value');
}

public static function
asArray(): array
{
if (empty(
self::values())) {
return
self::names();
}

if (empty(
self::names())) {
return
self::values();
}

return
array_column(self::cases(), 'value', 'name');
}
}
?>

Some example outputs:

<?php
var_export
(IpVersion::names()); // ['Ipv4', 'IPv6']
var_export(IpVersion::values()); // []
var_export(IpVersion::asArray()); // ['IPv4', 'IPv6']

var_export(Language::names()); // ['en', 'es']
var_export(Language::values()); // ['English', 'Spanish']
var_export(Language::asArray()); // ['en' => 'English', 'es' => 'Spanish']
To Top