PluginProbe
QuadMenu – Mega Menu / 3.3.8
QuadMenu – Mega Menu v3.3.8
3.3.8 3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 88 releases
quadmenu / vendor / franmastromarino / wp-orm / src / Repository / SingleVirtualRepository.php

SingleVirtualRepository.php in QuadMenu – Mega Menu 3.3.8, at vendor/franmastromarino/wp-orm/src/Repository/SingleVirtualRepository.php

55 lines 1.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace QuadLayers\WP_Orm\Repository;
4
5 use QuadLayers\WP_Orm\Entity\EntityInterface;
6 use QuadLayers\WP_Orm\Mapper\SingleMapperInterface;
7
8 class SingleVirtualRepository implements SingleVirtualRepositoryInterface
9 {
10 /**
11 * @var SingleMapperInterface
12 */
13 private $mapper;
14
15 /**
16 * @var EntityInterface|null
17 */
18 private $cache = null;
19
20 public function __construct(SingleMapperInterface $mapper)
21 {
22 $this->mapper = $mapper;
23 }
24
25 public function save(EntityInterface $entity): EntityInterface
26 {
27 return $this->cache = $entity;
28 }
29
30 public function update(array $data): EntityInterface
31 {
32 $entity = $this->cache;
33
34 if ($entity === null) {
35 return false; // Or throw an exception, as you prefer
36 }
37 // Merge old and new data
38 $updatedData = array_merge($entity->getProperties(), $data);
39 $updatedEntity = $this->mapper->toEntity($updatedData);
40 return $this->save($updatedEntity);
41 }
42
43 public function delete(): bool
44 {
45 $this->cache = null;
46 return true;
47 }
48
49 public function create(array $data): EntityInterface
50 {
51 $entity = $this->mapper->toEntity($data);
52 return $this->save($entity);
53 }
54 }
55