. * * 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\Value; use Espo\ORM\Entity; class ValueAccessor { public function __construct( private Entity $entity, private GeneralValueFactory $valueFactory, private GeneralAttributeExtractor $extractor ) {} /** * Get a field value object. */ public function get(string $field): ?object { if (!$this->isGettable($field)) { return null; } return $this->valueFactory->createFromEntity($this->entity, $field); } /** * Whether a field value object can be gotten. */ public function isGettable(string $field): bool { return $this->valueFactory->isCreatableFromEntity($this->entity, $field); } /** * Set a field value object. */ public function set(string $field, ?object $value): void { $attributeValueMap = $this->extractor->extract($this->entity->getEntityType(), $field, $value); $this->entity->set($attributeValueMap); } }