1: <?php
2:
3: namespace PHPixie\ORM;
4:
5: class Plans
6: {
7: /**
8: * @type Plans\Transaction
9: */
10: protected $transaction;
11:
12: /**
13: * @return Plans\Plan\Steps
14: */
15: public function steps()
16: {
17: return new Plans\Plan\Steps($this);
18: }
19:
20: /**
21: * @param $queryStep
22: * @return Plans\Plan\Query
23: */
24: public function query($queryStep)
25: {
26: return new Plans\Plan\Query($this, $queryStep);
27: }
28:
29: /**
30: * @param $countStep
31: * @return Plans\Plan\Query\Count
32: */
33: public function count($countStep)
34: {
35: return new Plans\Plan\Query\Count($this, $countStep);
36: }
37:
38: /**
39: * @param $resultStep
40: * @param $loader
41: * @return Plans\Plan\Query\Loader
42: */
43: public function loader($resultStep, $loader)
44: {
45: return new Plans\Plan\Query\Loader($this, $resultStep, $loader);
46: }
47:
48: /**
49: * @return Plans\Transaction
50: */
51: public function transaction()
52: {
53: if ($this->transaction === null)
54: $this->transaction = $this->buildTransaction();
55:
56: return $this->transaction;
57: }
58:
59: protected function buildTransaction()
60: {
61: return new Plans\Transaction();
62: }
63: }
64: