1: <?php
2:
3: namespace PHPixie\ORM\Models\Type;
4:
5: class Embedded extends \PHPixie\ORM\Models\Model
6: {
7: protected $data;
8: protected $maps;
9:
10: public function __construct($models, $configs, $data, $maps)
11: {
12: $this->data = $data;
13: $this->maps = $maps;
14:
15: parent::__construct($models, $configs);
16: }
17:
18: protected function buildConfig($modelName, $configSlice)
19: {
20: return new \PHPixie\ORM\Models\Type\Embedded\Config(
21: $this->configs->inflector(),
22: $modelName,
23: $configSlice
24: );
25: }
26:
27: public function entity($modelName, $data)
28: {
29: $config = $this->config($modelName);
30:
31: $entity = $this->buildEntity($config, $data);
32:
33: if($this->hasWrapper('embeddedEntities', $config->model)) {
34: $entity = $this->wrappers->embeddedEntityWrapper($entity);
35: }
36:
37: return $entity;
38: }
39:
40: public function loadEntity($modelName, $document)
41: {
42: $data = $this->data->document($document);
43: return $this->entity($modelName, $data);
44: }
45:
46: public function loadEntityFromData($modelName, $data)
47: {
48: $data = $this->data->documentFromData($data);
49: return $this->entity($modelName, $data);
50: }
51:
52: protected function buildEntity($config, $data)
53: {
54: return new \PHPixie\ORM\Models\Type\Embedded\Implementation\Entity(
55: $this->maps->entityProperty(),
56: $config,
57: $data
58: );
59: }
60:
61: public function type()
62: {
63: return 'embedded';
64: }
65: }