Na alle feedback op mijn vorige topics ben ik overgestapt op een MVC pattern en probeer ik daar mijn weg in te vinden.
Nu ben ik al een eind gekomen om het principe van een MVC pattern te doorgronden, heb ik zelf een DB class toegevoegd en deze weten te benaderen (is misschien niet moeilijk voor andere maar voor mij is het allemaal nieuw).
Nu zit ik dat ik een 2de controller op heb gemaakt en deze werkt ook. Nu wil ik de outpot van deze controller gebruiken in een andere controller.
In de code heb ik een:
indexController
kostenControler
In deze controllers zit zo ie zo een index functie en dan nog functies die je zelf aanmaakt.
Nu wil ik vanuit indexController de kostenController aanroepen maar dit lukt me niet.
Voor mijn gevoel zijn de registry.class en de router.class van belang voor mijn probleem en daarom
hieronder wat code en de foutmelding.
bij de volgende aanroep:
aanroep:
$registry = new registry;
$test = $registry->kostenController();
foutmelding:
Fatal error: Call to undefined method Registry::kostenController() in D:\.....\mvc_registraties\controller\indexController.php on line 233
aanroep:
$kosten = $this->registry->kostenController->index();
foutmelding:
Notice: Undefined index: kostenController in D:\......\mvc_registraties\application\registry.class.php on line 39
Fatal error: Call to a member function index() on a non-object in D:\......\mvc_registraties\controller\indexController.php on line 231
registry.php
al met al snap ik niet hoe ik een andere controller aan kan roepen terwijl het wel lukt om de db class aan te roepen met de onderstaande code:
$results = $this->registry->db->query('select * from ......... ');
Wie kan mij verder helpen?
Nu ben ik al een eind gekomen om het principe van een MVC pattern te doorgronden, heb ik zelf een DB class toegevoegd en deze weten te benaderen (is misschien niet moeilijk voor andere maar voor mij is het allemaal nieuw).
Nu zit ik dat ik een 2de controller op heb gemaakt en deze werkt ook. Nu wil ik de outpot van deze controller gebruiken in een andere controller.
In de code heb ik een:
- router
- registry
- models
- views
indexController
kostenControler
In deze controllers zit zo ie zo een index functie en dan nog functies die je zelf aanmaakt.
Nu wil ik vanuit indexController de kostenController aanroepen maar dit lukt me niet.
Voor mijn gevoel zijn de registry.class en de router.class van belang voor mijn probleem en daarom
hieronder wat code en de foutmelding.
bij de volgende aanroep:
aanroep:
$registry = new registry;
$test = $registry->kostenController();
foutmelding:
Fatal error: Call to undefined method Registry::kostenController() in D:\.....\mvc_registraties\controller\indexController.php on line 233
aanroep:
$kosten = $this->registry->kostenController->index();
foutmelding:
Notice: Undefined index: kostenController in D:\......\mvc_registraties\application\registry.class.php on line 39
Fatal error: Call to a member function index() on a non-object in D:\......\mvc_registraties\controller\indexController.php on line 231
registry.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| <?php Class Registry { /* * @the vars array * @access private */ private $vars = array(); /** * * @set undefined vars * * @param string $index * * @param mixed $value * * @return void * */ public function __set($index, $value) { $this->vars[$index] = $value; } /** * * @get variables * * @param mixed $index * * @return mixed * */ public function __get($index) { return $this->vars[$index]; } } ?> |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
| <?php class router { /* * @the registry */ private $registry; /* * @the controller path */ private $path; private $args = array(); public $file; public $controller; public $action; function __construct($registry) { $this->registry = $registry; } /** * * @set controller directory path * * @param string $path * * @return void * */ function setPath($path) { /*** check if path i sa directory ***/ if (is_dir($path) == false) { throw new Exception ('Invalid controller path: `' . $path . '`'); } /*** set the path ***/ $this->path = $path; } /** * * @load the controller * * @access public * * @return void * */ public function loader() { /*** check the route ***/ $this->getController(); /*** if the file is not there diaf ***/ if (is_readable($this->file) == false) { $this->file = $this->path.'/error404.php'; $this->controller = 'error404'; } /*** include the controller ***/ include $this->file; /*** a new controller class instance ***/ $class = $this->controller . 'Controller'; $controller = new $class($this->registry); /*** check if the action is callable ***/ if (is_callable(array($controller, $this->action)) == false) { $action = 'index'; } else { $action = $this->action; } /*** run the action ***/ $controller->$action(); } /** * * @get the controller * * @access private * * @return void * */ private function getController() { /*** get the route from the url ***/ $route = (empty($_GET['rt'])) ? '' : $_GET['rt']; if (empty($route)) { $route = 'index'; } else { /*** get the parts of the route ***/ $parts = explode('/', $route); $this->controller = $parts[0]; if(isset( $parts[1])) { $this->action = $parts[1]; } } if (empty($this->controller)) { $this->controller = 'index'; } /*** Get action ***/ if (empty($this->action)) { $this->action = 'index'; } /*** set the file path ***/ $this->file = $this->path .'/'. $this->controller . 'Controller.php'; } } ?> |
al met al snap ik niet hoe ik een andere controller aan kan roepen terwijl het wel lukt om de db class aan te roepen met de onderstaande code:
$results = $this->registry->db->query('select * from ......... ');
Wie kan mij verder helpen?
https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl