Trait LaravelUi5\Core\Ui5\Concerns\HasArtifactIdentity

Const-backed identity getters for {@see \LaravelUi5\Core\Ui5\Contracts\ArtifactInterface}.

The three meta attributes are frozen, intrinsic identity — so they stay interface methods (the contract the registry reads polymorphically on every route resolution), but their value is declared once as a class constant. A concrete artifact declares only:

public const string NAMESPACE = 'io.example.foo'; public const string TITLE = 'Foo'; public const string DESCRIPTION = 'A foo artifact.';

and inherits the getters from its abstract base (which uses this trait). The version is the module's, never the artifact's ({@see \LaravelUi5\Core\Ui5\Contracts\Ui5ModuleInterface::getVersion()}).

A trait, not a shared base: there is no shared artifact parent, and AbstractUi5App extends ODataService already spends PHP's single-inheritance slot — a trait is inheritance-neutral and applies uniformly.

static::, not self::: late static binding reads the concrete class's constant, not the base's. A concrete that hand-writes a getter simply overrides the trait method.

The landlord pattern: the bases declare the three constants typed and null on themselves (the trait cannot carry them: a class that uses a trait with a constant and declares the same constant is a fatal error); a slot the concrete leaves empty makes its getter throw, naming the constant and the generator — loud, and visible to the analyser. A class that uses this trait without a base declares the constants itself.

Methods