class_uses
funkcja
Zwraca tablicę traitów bezpośrednio użytych przez klasę lub obiekt. Nie uwzględnia traitów z klas nadrzędnych — tylko bieżący poziom hierarchii.
class_uses(object|string $object_or_class, bool $autoload = true): array|false
class_uses zwraca asocjacyjną tablicę, gdzie klucze i wartości to nazwy traitów bezpośrednio użytych przez podaną klasę lub obiekt. Ważne: funkcja nie przechodzi po hierarchii dziedziczenia — traitów użytych w klasach nadrzędnych nie uwzględnia. Aby pobrać wszystkie traity łącznie z rodziców, wywołaj class_uses rekurencyjnie dla każdej klasy z class_parents. Zwraca false, gdy klasa nie istnieje.
<?php
declare(strict_types=1);
trait Loggowalny
{
public function log(string $msg): void {}
}
trait Cacheowalny
{
public function cache(string $klucz): void {}
}
class Baza
{
use Loggowalny;
}
class Serwis extends Baza
{
use Cacheowalny;
}
var_dump(class_uses('Serwis'));
// array(1) { ["Cacheowalny"] => string(11) "Cacheowalny" }
// Loggowalny NIE jest zwrócony — pochodzi z klasy Baza
var_dump(class_uses('Baza'));
// array(1) { ["Loggowalny"] => string(10) "Loggowalny" }
// Działa też na obiekcie:
$s = new Serwis();
var_dump(class_uses($s));
// array(1) { ["Cacheowalny"] => string(11) "Cacheowalny" }