1: <?php
2:
3: namespace PHPixie\ORM\Maps;
4:
5: abstract class Map
6: {
7: protected $sides = array();
8:
9: public function add($side)
10: {
11: $modelName = $side->modelName();
12: $propertyName = $side->propertyName();
13: $this->ensureModel($modelName);
14:
15: if (array_key_exists($propertyName, $this->sides[$modelName])) {
16: throw new \PHPixie\ORM\Exception\Relationship("Duplicate property '$propertyName' defined on '$modelName'");
17: }
18:
19: $this->sides[$modelName][$propertyName] = $side;
20: }
21:
22: public function get($modelName, $propertyName)
23: {
24: return $this->sides[$modelName][$propertyName];
25: }
26:
27: public function getModelSides($modelName)
28: {
29: return $this->sides[$modelName];
30: }
31:
32: protected function ensureModel($modelName)
33: {
34: if (!array_key_exists($modelName, $this->sides)) {
35: $this->sides[$modelName] = array();
36: }
37: }
38: }