1: <?php
2:
3: namespace PHPixie\ORM\Loaders\Loader\Proxy;
4:
5: class Preloading extends \PHPixie\ORM\Loaders\Loader\Proxy
6: implements \PHPixie\ORM\Mappers\Preload\Preloadable
7: {
8: protected $preloaders = array();
9:
10: public function addPreloader($relationship, $preloader)
11: {
12: $this->preloaders[$relationship] = $preloader;
13: }
14:
15: public function offsetExists($offset)
16: {
17: return $this->loader->offsetExists($offset);
18: }
19:
20: public function getByOffset($offset)
21: {
22: $entity = $this->loader->getByOffset($offset);
23: $this->preloadEntityProperties($entity);
24:
25: return $entity;
26: }
27:
28: protected function preloadEntityProperties($entity)
29: {
30: foreach($this->preloaders as $relationship => $preloader) {
31: $property = $entity->getRelationshipProperty($relationship);
32: $preloader->loadProperty($property);
33: }
34: }
35:
36: }
37: