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" }
📘 Naucz się w lekcji →