. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\ORM\Defs; use Espo\ORM\Defs\Params\FieldParam; use RuntimeException; /** * Field definitions. */ class FieldDefs { /** @var array */ private array $data; private string $name; private function __construct() {} /** * @param array $raw */ public static function fromRaw(array $raw, string $name): self { $obj = new self(); $obj->data = $raw; $obj->name = $name; return $obj; } /** * Get a name. */ public function getName(): string { return $this->name; } /** * Get a type. */ public function getType(): string { $type = $this->data[FieldParam::TYPE] ?? null; if ($type === null) { throw new RuntimeException("Field '$this->name' has no type."); } return $type; } /** * Whether is not-storable. */ public function isNotStorable(): bool { return $this->data[FieldParam::NOT_STORABLE] ?? false; } /** * Get a parameter value by a name. */ public function getParam(string $name): mixed { return $this->data[$name] ?? null; } /** * Has a parameter value. */ public function hasParam(string $name): bool { return array_key_exists($name, $this->data); } }