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 | ||
|---|---|---|
public
|
getNamespace(): string
|
# |
public
|
getTitle(): string
|
# |
public
|
getDescription(): string
|
# |