1: <?php
2:
3: namespace PHPixie\ORM;
4:
5: class Loaders
6: {
7: 8: 9:
10: protected $ormBuilder;
11:
12: public function __construct($ormBuilder)
13: {
14: $this->ormBuilder = $ormBuilder;
15: }
16:
17: public function iterator($loader)
18: {
19: return new Loaders\Iterator($loader);
20: }
21:
22: public function multiplePreloader($resultPreloader, $ids)
23: {
24: return new Loaders\Loader\MultiplePreloader($this, $resultPreloader, $ids);
25: }
26:
27: public function editableProxy($loader)
28: {
29: return new Loaders\Loader\Proxy\Editable($this, $loader);
30: }
31:
32: public function cachingProxy($loader)
33: {
34: return new Loaders\Loader\Proxy\Caching($this, $loader);
35: }
36:
37: public function preloadingProxy($loader)
38: {
39: return new Loaders\Loader\Proxy\Preloading($this, $loader);
40: }
41:
42: public function reusableResult($repository, $reusableResultStep)
43: {
44: return new Loaders\Loader\Repository\ReusableResult(
45: $this,
46: $repository,
47: $reusableResultStep
48: );
49: }
50:
51: public function dataIterator($repository, $reusableResultStep)
52: {
53: return new Loaders\Loader\Repository\DataIterator(
54: $this,
55: $repository,
56: $reusableResultStep
57: );
58: }
59:
60: public function arrayNode($modelName, $arrayNode, $owner, $ownerPropertyName)
61: {
62: $embeddedModel = $this->ormBuilder->models()->embedded();
63:
64: return new Loaders\Loader\Embedded\ArrayNode(
65: $this,
66: $embeddedModel,
67: $modelName,
68: $arrayNode,
69: $owner,
70: $ownerPropertyName
71: );
72: }
73:
74: }