1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace LaravelUi5\OData\Edm\Contracts\Annotation;
6:
7: /**
8: * A record annotation value — a structured value composed of named
9: * property values, optionally typed by a qualified term record type.
10: *
11: * Records are the backbone of complex annotations. A UI.DataField
12: * record, a Capabilities.FilterRestrictionsType record, or a
13: * Common.ValueListType record are all represented by this interface.
14: *
15: * The type name is the qualified name of the record type as declared
16: * in the vocabulary, e.g. "UI.DataField" or
17: * "Capabilities.FilterRestrictionsType". It is absent for untyped
18: * records, though well-formed SAP vocabulary annotations are
19: * typically typed.
20: *
21: * @see OData CSDL XML v4.01 §14.4.12 (Record)
22: */
23: interface RecordAnnotationValueInterface extends AnnotationValueInterface
24: {
25: /**
26: * The qualified name of this record's type, or null when the
27: * record is untyped.
28: *
29: * Corresponds to the Type attribute on the <Record> element in
30: * CSDL XML, e.g. "UI.DataField".
31: */
32: public function getType(): ?string;
33:
34: /**
35: * All property values declared on this record, in document order.
36: *
37: * @return list<PropertyValueInterface>
38: */
39: public function getPropertyValues(): array;
40:
41: /**
42: * Returns the property value with the given name, or null when
43: * no property of that name is declared on this record.
44: */
45: public function getPropertyValue(string $name): ?PropertyValueInterface;
46: }
47: