trait_exists
funkcja
Sprawdza, czy trait o podanej nazwie istnieje. Analogiczna do `class_exists`, ale zwraca `true` tylko dla traitów, nie dla klas ani interfejsów.
trait_exists(string $trait, bool $autoload = true): bool
trait_exists zwraca true, gdy PHP zna trait o podanej nazwie — z uwzględnieniem przestrzeni nazw. Parametr $autoload (domyślnie true) decyduje, czy uruchomić autoloader przed sprawdzeniem. Traitów nie można tworzyć przez new ani sprawdzać instanceof, dlatego trait_exists jest jedynym pewnym sposobem weryfikacji ich istnienia w kodzie dynamicznym. Dla klas używaj class_exists, dla interfejsów — interface_exists.
<?php
declare(strict_types=1);
trait Loggowalny
{
public function log(string $msg): void
{
echo "[LOG] {$msg}\n";
}
}
trait Walidowalny
{
abstract public function waliduj(): bool;
}
var_dump(trait_exists('Loggowalny')); // bool(true)
var_dump(trait_exists('Walidowalny')); // bool(true)
var_dump(trait_exists('NieIstnieje')); // bool(false)
// Dla porównania — klasa o tej samej nazwie:
class Pomocnik {}
var_dump(trait_exists('Pomocnik')); // bool(false)
var_dump(class_exists('Pomocnik')); // bool(true)