1: <?php
2:
3: namespace Deimos\Controller;
4:
5: use Deimos\Builder\Builder;
6: use Deimos\Controller\Traits\Request;
7:
8: abstract class Proxy extends Builder
9: {
10:
11: use Request;
12:
13: /**
14: * @var string
15: */
16: protected $methodName = 'action';
17:
18: /**
19: * Controller constructor.
20: *
21: * @param Builder $builder
22: *
23: * @throws \InvalidArgumentException
24: */
25: public function __construct(Builder $builder)
26: {
27: if ($builder instanceof self)
28: {
29: throw new \InvalidArgumentException('Instanceof SELF');
30: }
31:
32: $this->builder = $builder;
33: }
34:
35: /**
36: * @return void
37: */
38: abstract protected function configure();
39:
40: /**
41: * @return void
42: */
43: abstract protected function before();
44:
45: /**
46: * @param mixed $data
47: *
48: * @return void
49: */
50: abstract protected function after($data);
51:
52: /**
53: * @param mixed $data
54: *
55: * @return mixed
56: */
57: abstract protected function display($data);
58:
59: /**
60: * @return mixed
61: */
62: abstract public function execute();
63:
64: }